http://edog.blog.hexun.com/1581458_d.html
用VC或者socket实现GET网页数据的方法用得多了,近日看了一下用VC实现POST网页的方法,总结了以下的一个函数:
#include "afxinet.h"
bool PostData(LPCTSTR host, LPCTSTR object, LPCTSTR postdata,
LPCTSTR refererlink, int port)
{
CString strHeaders = _T("Content-Type:
application/x-www-form-urlencoded");
strHeaders += "\r\nAccept-Language:zh-cn";
if(refererlink)
{
strHeaders +=
"\r\nReferer:";
strHeaders +=
refererlink;
}
CString strFormData = _T(postdata);
CInternetSession session;
CHttpConnection* pConnection =
session.GetHttpConnection(_T(host));
if(pConnection == NULL) return
false;
CHttpFile* pFile =
pConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST,
_T(object));
if(pFile == NULL) return
false;
BOOL result =
pFile->SendRequest(strHeaders,
(LPVOID)(LPCTSTR)strFormData, strFormData.GetLength());
if(result == FALSE) return
false;
DWORD dwRet;
pFile->QueryInfoStatusCode(dwRet);
CString m_strHtml="";
char szBuff[1024];
UINT nRead;
while ((nRead =
pFile->Read(szBuff,1023))>0)
{
m_strHtml+=CString(szBuff,nRead);
}
FILE *fp = fopen("C:\\11.html", "w");
fwrite(m_strHtml, 1, m_strHtml.GetLength(),
fp);
fclose(fp);
if (dwRet == HTTP_STATUS_OK)
{
return true;
}
return false;
}
加载中,请稍候......