본문 바로가기
Coding/C,C++, Win32, MFC

WinINet을 이용하여 HTTP/HTTPS로 POST하는방법

by 생각하는대로살자 2009. 8. 9.

뇌이뇬 2008.01.17 블로깅

----------------------------------------------
원문 : http://blog.naver.com/remipa01/90025335342 

[-] Collapse
HINTERNET hInternetRoot = InternetOpen( "TestWinINet",
                                           INTERNET_OPEN_TYPE_PRECONFIG,
                                           NULL,
                                           NULL,
                                           0);



   HINTERNET hInternetConnect = InternetConnect(   hInternetRoot,
                                                   "www.test.co.kr",
                                                   INTERNET_DEFAULT_HTTPS_PORT,
                                                   "",
                                                   "",
                                                   INTERNET_SERVICE_HTTP,
                                                   0,
                                                   0);


   HINTERNET hOpenRequest = HttpOpenRequest(   hInternetConnect,
                                               "POST",
                                               "/test.asp",
                                               HTTP_VERSION,
                                               "",
                                               NULL,
                                               INTERNET_FLAG_SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID|INTERNET_FLAG_IGNORE_CERT_DATE_INVALID,
                                               0);

    DWORD dwFlags = 0 ;
    dwFlags = SECURITY_FLAG_IGNORE_UNKNOWN_CA   |
           SECURITY_FLAG_IGNORE_REVOCATION       |
           SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTP   |
           SECURITY_FLAG_IGNORE_REDIRECT_TO_HTTPS |
           SECURITY_FLAG_IGNORE_CERT_DATE_INVALID   |
           SECURITY_FLAG_IGNORE_CERT_CN_INVALID;



InternetSetOption (hOpenRequest, INTERNET_OPTION_SECURITY_FLAGS, &dwFlags, sizeof(dwFlags));


   char szPostData[2048] = {0};
   lstrcpy(szPostData, "id=test&passwd=testpw");

   // post header

   char szLen[MAX_PATH] = {0};
   char szHeader[2048] = {0};


   wsprintf(szLen, "%d", lstrlen(szPostData));
   lstrcpy(szHeader, "Accept: text/*\r\n");
   lstrcat(szHeader, "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;* Windows NT)\r\n");
   lstrcat(szHeader, "Content-type: application/x-www-form-urlencoded\r\n");
   lstrcat(szHeader, "Content-length: ");
   lstrcat(szHeader, szLen);
   lstrcat(szHeader, "\r\n\n");



   HttpAddRequestHeaders(hOpenRequest, szHeader, -1L, HTTP_ADDREQ_FLAG_ADD);
   BOOL bSendRequest = HttpSendRequest(hOpenRequest,
                                       NULL,
                                       0,
                                       szPostData,
                                       lstrlen(szPostData));

   char szBuf[2048] = {0};
   DWORD dwSize = 0;
   BOOL bRead = InternetReadFile(  hOpenRequest,
                                   szBuf,
                                   sizeof(szBuf),
                                   &dwSize);

   MessageBox( szBuf);

   BOOL bRet = InternetCloseHandle(hOpenRequest);
   bRet = InternetCloseHandle(hInternetConnect);
   bRet = InternetCloseHandle(hInternetRoot);