HTTPS로 웹서버와 통신하는 함수입니다.
기존 소스에서 발췌된거라 약간 손(?)봐서 사용할 수 있는 소스 입니다.
로그인이나 서버와의 세션이 유지되어야 하는 경우에는
CInternetSession 이 멤버 혹은 외부변수로 사용되어야 할겁니다.
void SendPostData(CString szURL, CString szHost, CString szPost)
{
CInternetSession *pSession = NULL;
CHttpConnection *pConnection = NULL;
CHttpFile *pHttpFile = NULL;
pSession = new CInternetSession;
CString szHTML = _T(""); // 리턴될 HTML
CString strHeaders = "Content-Type: application/x-www-form-urlencoded\r\n";
strHeaders += "User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)\r\n";
char szPostData[1024] = {0,};
sprintf(szPostData, szPost);
// HTTPS 통신을 위한 플래그 설정
int m_secureFlags =
INTERNET_FLAG_RELOAD|INTERNET_FLAG_KEEP_CONNECTION|INTERNET_FLAG_NO_CACHE_WRITE|INTERNET_FLAG_ SECURE|INTERNET_FLAG_IGNORE_CERT_CN_INVALID;
TRY
{
// HTTPS 는 기본적으로 443포트를 사용
pConnection = pSession->GetHttpConnection(szHost, INTERNET_OPEN_TYPE_PRECONFIG, 443, NULL, NULL);
pHttpFile = pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, szURL, NULL, 0, NULL, NULL, m_secureFlags);
BOOL bResult = pHttpFile->SendRequest(strHeaders, strHeaders.GetLength(), szPostData, strlen(szPostData));
CString szRead = "";
CString szHTML = "";
// 서버가 리턴해준 문자열을 받음
while(pHttpFile->ReadString(szRead))
szHTML += szRead;
pConnection->Close();
pHttpFile->Close();
delete pConnection;
delete pHttpFile;
return TRUE;
}
CATCH (CInternetException, pEx)
{
pHttpFile->Close();
pConnection->Close();
delete pHttpFile;
delete pConnection;
return FALSE;
}
END_CATCH
return TRUE;
}
'C/C++' 카테고리의 다른 글
[비주얼스튜디오]ipch폴더 sdf파일 처리 (0) | 2016.09.26 |
---|