본문 바로가기
Borland

예제: POST로 많은 양의 데이터를 요청할 때 HttpSendRequestEx를 사용하는 방법

by leo21c 2008. 1. 17.
SMALL

예제: POST로 많은 양의 데이터를 요청할 때 HttpSendRequestEx를 사용하는 방법

http://support.microsoft.com/kb/177188


이 문서가 적용되는 제품 보기.
기술 자료 ID : 177188
마지막 검토 : 2005년 8월 19일 금요일
수정 : 3.2
이 문서는 이전에 다음 ID로 출판되었음: KR177188
이 페이지에서

요약

추가 정보

참고

참조
요약


이 예제에서는 Internet Explorer 4.0 WinInet.dll에 처음 도입되고 Internet Client SDK에 설명되어 있는 HttpSendRequestEx 함수의 올바른 사용 방법을 보여줍니다.

원래의 HttpSendRequest 함수에는 큰 제한이 있습니다. 즉, 이 함수를 호출할 때 요청하는 모든 데이터를 단일 버퍼에 넣어 제공해야 합니다. 이 제한 때문에 종종 불편이 따르고, 특정 클라이언트 응용 프로그램에서 성능이 떨어지며, 메모리가 적은 클라이언트 컴퓨터에서 많은 양의 데이터를 업로드하지 못할 수도 있습니다. 반면에 새 HttpSendRequestEx 함수를 이용하면 프로그램에서 요청을 시작하고, 데이터를 가능한 한 작은 조각으로 나누어 전송하고 모든 데이터가 전송되었을 때 요청을 끝낼 수 있습니다. 이 함수가 작동하려면 컴퓨터에 Internet Explorer 4.0이 설치되어야 있어야 합니다. Microsoft 다운로드 센터에서 다음 파일을 다운로드할 수 있습니다.

Hsrex.exe (http://download.microsoft.com/download/ie4095/hsrex/1/win98/en-us/hsrex.exe)
Microsoft 지원 파일을 다운로드하는 방법에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
119591 (http://support.microsoft.com/kb/119591/) 온라인 서비스로부터 Microsoft 지원 파일을 구하는 방법
Microsoft는 파일을 게시한 날짜에 사용할 수 있는 최신의 바이러스 예방 프로그램으로 이 파일을 검사했습니다. 이 파일은 무단 변경을 방지하기 위해 보안이 강화된 서버에 저장됩니다.


위로 가기

추가 정보


Hsrex.exe는 데모 프로그램 코드인 BigPost.cpp 파일과 POST 요청에서 전송되는 모든 데이터를 읽는 ASP(Active Server Pages) 스크립트인 Readall.asp를 포함하는 자동 압축 풀림 보관 파일입니다. BigPost의 예제 대상으로 제공되는 Readall.asp는 ASP를 지원하는 Microsoft Internet Information Server(IIS) 버전에서 사용할 수 있습니다. 다른 웹 서버를 사용할 때는 데이터를 읽기 위해 해당 서버 스크립트를 제공해야 합니다.

Microsoft Visual C++ 5.0에서 프로그램을 컴파일하려면 다음과 같이 하십시오.

1. Visual C++를 실행하고 "BigPost"라는 새 Win32 콘솔 응용 프로그램을 만듭니다.
2. 프로젝트를 만든 디렉터리에서 Hsrex.exe를 실행합니다.
3. BigPost 프로젝트에 BigPost.cpp를 추가합니다.
4. Project Settings 대화 상자를 열고 Link 탭을 누른 다음 "Object/library modules:" 필드에 WinInet.lib를 추가합니다.
5. 컴파일러와 링커가 Internet Client SDK의 Wininet.h와 Wininet.lib를 사용하도록 Visual C++를 구성해야 합니다. 이렇게 구성하지 않으면 컴파일러 또는 링커 오류가 발생합니다. Visual C++에 제공된 포함(include) 파일 및 라이브러리 파일에는 HttpSendRequestEx의 프로토타입 및 내보내기가 포함되어 있지 않습니다.
6. 프로젝트를 빌드합니다. BigPost.exe가 만들어집니다.
아래와 같은 명령을 사용하여 이 프로그램을 실행합니다.
BigPost <Size> <Server> <Path>
예를 들어, 아래 명령은 http://yourserver/scripts/ReadAll.asp에 1메가바이트(1024KB)를 게시합니다.
BigPost 1024 yourserver /scripts/ReadAll.asp
위 명령의 출력은 아래와 같습니다. Test of POSTing 1024KB with WinInet
1048576 bytes sent.
The following was returned by the server:
1048576 bytes were read.

Finished.

위로 가기

참고


• HttpSendRequestEx를 사용할 때는 아래의 BigPost.cpp 코드에서 보듯이 HttpOpenRequest의 호출에서

INTERNET_FLAG_NO_CACHE_WRITE 플래그를 사용해야 합니다.HINTERNET hRequest = HttpOpenRequest(hConnect, "POST", argv[3], NULL,
NULL, NULL, INTERNET_FLAG_NO_CACHE_WRITE, 0);



• 이 예제에서 보여준 기능은 현재 HttpSendRequestEx의 전체 구현을 나타냅니다. 이 함수에 대한 설명서에 나오는 다른 플래그와 매개 변수는 아직 구현되지 않았습니다.
• 데이터를 프로그래머가 원하는 크기의 여러 버퍼에 나누어 전송할 수는 있지만 요청을 시작하기 전에 요청에서 전송할 총 바이트 수를 알아야 하며, 이 바이트 수는 실제로 전송된 총 바이트 수와 정확히 일치해야 합니다. 그렇지 않으면 HttpEndRequest에서 오류가 반환됩니다.

위로 가기

참조
자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
177190 (http://support.microsoft.com/kb/177190/) BUG: InternetWriteFile을 호출하면 오류 12019가 발생한다

LIST