Send HTTP Post Request
http://support.microsoft.com/kb/165298
WinInet을 사용하여 양식 전송 제대로 시뮬레이션하려면 적절한 콘텐츠 형식을 나타내는 헤더 보내야 합니다. Forms에 대해 올바른 Content-Type 헤더에 있습니다:
Content-Type: application/x-www-form-urlencoded
콘텐츠 형식을 지정하지 않은 경우 대부분의 경우 서버를 적절히 응답하지 않습니다.
예를 들어, IIS 3.0 Active Server Pages 구성 요소를 실제로 ' application/x-www-form-urlencoded ' 이
헤더를 특히 폼 변수 "Request.Form" 개체를 추가하기 전에 확인합니다.
이 MIME/Content-Type 데이터 요청URL-encoded form variables 목록을 나타냅니다.
공백 문자 (ASCII 32) 로 인코딩된 '+ ', 특수 문자 예: 것을'!' 의미합니다
URL 인코딩은 '%21' 16진수 형식으로 인코딩된.
폼 POST 요청을 시뮬레이션하기 위해 MFC WinInet 클래스를 사용하는 코드
CString strHeaders =
_T("Content-Type: application/x-www-form-urlencoded");
// URL-encoded form variables -
// name = "John Doe", userid = "hithere", other = "P&Q"
CString strFormData = _T("name=John+Doe&userid=hithere&other=P%26Q");
CInternetSession session;
CHttpConnection* pConnection =
session.GetHttpConnection(_T("ServerNameHere"));
CHttpFile* pFile =
pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,
_T("FormActionHere"));
BOOL result = pFile->SendRequest(strHeaders,
(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
======================================================================
MFC 동일한 코드를 직선 SDK 호출하려면 다음과 같이 변환합니다:
static TCHAR hdrs[] =
_T("Content-Type: application/x-www-form-urlencoded");
static TCHAR frmdata[] =
_T("name=John+Doe&userid=hithere&other=P%26Q");
static LPSTR accept[2]={"*/*", NULL};
// for clarity, error-checking has been removed
HINTERNET hSession = InternetOpen("MyAgent",
INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
HINTERNET hConnect = InternetConnect(hSession, _T("ServerNameHere"),
INTERNET_DEFAULT_HTTP_PORT, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 1);
HINTERNET hRequest = HttpOpenRequest(hConnect, "POST",
_T("FormActionHere"), NULL, NULL, accept, 0, 1);
HttpSendRequest(hRequest, hdrs, strlen(hdrs), frmdata, strlen(frmdata));
// close any valid internet-handles
반응형
'IT-개발,DB' 카테고리의 다른 글
[개발/API] 웹에 있는 파일크기 알아오기 (0) | 2012.01.27 |
---|---|
[개발/버전] SVN 설치 (0) | 2012.01.26 |
[개발/vc++] 유니코드로 저장하기, UTF8로 저장하기 (0) | 2012.01.19 |
[개발/인터넷] HTTP 상태 코드(HTTP Status codes) (0) | 2012.01.19 |
[개발/웹] Post, Get 데이터 보내기 유의사항 (0) | 2012.01.13 |
댓글