18,363
社区成员




BOOL CHttpClient::doPost(CString href, CStringA& response, LPCTSTR referer)
{
BOOL ret = FALSE;
response = "";
CString strServerName;
CString strObject;
INTERNET_PORT nPort;
DWORD dwServiceType;
AfxParseURL((LPCTSTR)href, dwServiceType, strServerName, strObject, nPort);
DWORD dwFlags = INTERNET_FLAG_NO_AUTO_REDIRECT;
if(dwServiceType == AFX_INET_SERVICE_HTTPS)
{
dwFlags |= INTERNET_FLAG_SECURE;
}
CInternetSession sess(_T("Microsoft Internet Browser"));
CHttpConnection* conn = NULL;
CHttpFile* pFile = NULL;
DWORD retcode;
int ilen = WideCharToMultiByte(CP_UTF8, 0, strParam, -1, NULL, 0, NULL, NULL);
char *utf8temp = new char[ilen+1];
memset(utf8temp, 0, ilen +1);
WideCharToMultiByte (CP_UTF8, 0, (LPCTSTR)strParam, -1, utf8temp, ilen, NULL, NULL);
try
{
conn = sess.GetHttpConnection(strServerName, nPort);
pFile = conn->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject, referer, 1, NULL, _T("HTTP/1.1"), dwFlags);
pFile->AddRequestHeaders(_T("Content-Type: application/x-www-form-urlencoded"));
pFile->AddRequestHeaders(_T("Accept: */*"));
pFile->SendRequest(NULL, 0, utf8temp, ilen);
pFile->QueryInfoStatusCode(retcode);
char buffer[8192];
UINT len = 0;
while((len=pFile->Read(buffer, 8192)) > 0)
{
response.Append(buffer, len);
}
ret = TRUE;
}
catch(CFileException* e)
{
e->Delete();
}
catch (CInternetException* e)
{
e->Delete();
};
if(pFile)
{
pFile->Close();
delete pFile;
}
delete[] utf8temp;
conn->Close();
delete conn;
sess.Close();
return ret;
}