Menu

wininet get 예제

  • Uncategorized

다음 예제에서는 InternetConnect() 및 InternetOpenUrl()을 사용하여 Microsoft 웹 사이트에 연결하기 위해 기본 WinInet 세션을 설정하는 방법에 대한 짧은 예제를 살펴보겠습니다. 이 함수는 현재 창에 대한 핸들, 편집 상자의 식별 번호 및 HttpOpenRequest에서 만들고 HttpSendRequest에서 보낸 HINTERNET 핸들을 허용합니다. 그것은 사용 InternetQueryDataAvailable 리소스의 크기를 확인 하 고 InternetReadFile를 사용 하 여 다운로드. 그러면 내용이 편집 상자에 표시됩니다. 다운로드할 리소스의 URL 이름을 지정하는 문자 문자열(또는 “libcurl” 메서드의 경우 더 긴 벡터). “libcurl” 및 “wget” 메서드는 http:// 따라 https:// 리디렉션을 지원 하도록 지원 http:// http:// 합니다. (방법 “컬”에 대 한 추가 = “-L”인수를 사용 합니다. wget에서 리디렉션을 사용하지 않으려면 추가 = “-최대 리디렉션 =0″을 사용합니다. “wininet”방법은 일부 리디렉션을 지원하지만 전부는 아닙니다. (메서드 “libcurl”의 경우 메시지는 리디렉션의 끝점을 인용합니다.) 이 함수를 호출할 때 lpszAgent 매개 변수는 세션을 만드는 응용 프로그램의 이름을 포함 하는 문자열이며 HTTP 요청에 사용자 에이전트 헤더 값으로 전송 됩니다.

다음 매개 변수는 서버와의 연결을 설정하는 방법을 설명합니다. dwAccessType 매개 변수는 다음 중 하나로 설정할 수 있습니다. 그렇지 않으면 초기 너비는 100Kbytes를 나타내며 현재 너비를 초과할 때마다 두 배가 됩니다. (비대화형 사용에서는 텍스트 버전을 사용합니다. 파일 길이가 알려진 경우 등호는 완료된 전송의 2%를 나타냅니다. 그렇지 않으면 점은 10Kb를 나타냅니다. 프록시는 환경 변수를 통해 지정할 수 있습니다. no_proxy를 *로 설정하면 모든 프록시가 시도되지 않습니다. 그렇지 않으면 http_proxy 또는 ftp_proxy (또는 모든 대문자 버전에 실패)의 설정이 참조되고 비어 없는 것이 프록시 사이트로 사용되는 경우 참조됩니다.

FTP 전송의 경우 프록시의 사용자 이름과 암호를 ftp_proxy_user 및 ftp_proxy_암호로 지정할 수 있습니다. http_proxy의 형식은 포트가 기본값 인 80으로 http://proxy.dom.com:8080/ 후행 슬래시를 생략할 수 있는 http://proxy.dom.com/ 또는 http://proxy.dom.com:8080/ 합니다. ftp_proxy의 경우 기본 포트가 21인 ftp://proxy.dom.com:3128/ 양식을 사용합니다. 이러한 환경 변수는 다운로드 코드를 처음 사용하기 전에 설정해야 합니다. 다음 다이어그램은 HTTP 프로토콜과 함께 사용되는 함수의 관계를 보여 주며 있습니다. 그늘진 상자는 HINTERNET 핸들을 반환하는 함수를 나타내고 일반 상자는 종속함수에 의해 생성된 HINTERNET 핸들을 사용하는 함수를 나타냅니다. WinInet을 통해 모든 작업을 수행하는 데는 기본적으로 네 단계가 있습니다: 오류의 경우 대상 파일에 어떤 일이 일어나는지는 메서드와 R 버전에 따라 다릅니다. 현재 “내부”, “wininet” 및 “libcurl” 메서드는 파일을 변경하지 않아야 하는 시기를 지정하는 모드를 제외하고 URL을 사용할 수 없는 경우 파일을 제거합니다. HttpAddRequestHeaders는 HttpOpenRequest, 헤더, 헤더의 길이 및 수정자를 포함하는 문자열에 의해 만들어진 HTTP 요청 핸들이 필요합니다. 바이너리 파일을 다운로드하기 위해 작성된 코드는 모드 = “wb”(또는 “ab”)를 사용해야 하지만 텍스트 전송으로 인해 발생하는 문제는 Windows에서만 볼 수 있습니다. 이제 인터넷 세션 설정을 완료했습니다. 이 작업은 InternetConnect() 및 InternetOpenUrl() 기능을 사용하여 수행할 수 있습니다.

어떤 기능을 사용하는지 연결하려는 서버에 대해 가지고 있는 정보에 따라 달라집니다.

Search