在MFC下实现POST网页表单,下载服务器文件或取得网页源代码

/**************************************************************
 *此函数用于在MFC下实现POST网页表单,用于下载服务器文件或取得网页源代码 
 *说明: 
 *strServer、strObject、wPort:这几项的值都可以通过抓包工具轻松取得。
 *我用的抓包工具是wireshark,摸索着就使用,还是挺简单的! 
 *headers、postData:这两项也可以通过抓包软件获得。
 *协议头headers的形式较为固定,而postData需要具体形式自己构造。 
 *strHtml:此变量保存POST后返回的数据,网页源代码或服务器的文件
 *若文件过大,可以直接写入本地文件,就不需要这个变量保存了。
 **************************************************************/
#include <afxinet.h>

void HTTP_POST_DATA(CString strServer, CString strObject, WORD wPort, CString headers, CString postData, CString &strHtml)
{
	CInternetSession session;
	CHttpConnection* pHttpConnection = NULL;
	CHttpFile *pHttpFile = NULL;

	pHttpConnection = session.GetHttpConnection(strServer, wPort); 
	pHttpFile = pHttpConnection->OpenRequest(CHttpConnection::HTTP_VERB_POST, strObject); 
	pHttpFile->AddRequestHeaders(headers);
	pHttpFile->SendRequestEx(postData.GetLength()); 
	pHttpFile->WriteString(postData);
	pHttpFile->EndRequest();
	DWORD dwRet; 
	pHttpFile->QueryInfoStatusCode(dwRet); 
 
	if(dwRet == HTTP_STATUS_OK)
	{ 		
		char *pszBuffer = new char[1024];
		UINT nRead = pHttpFile->Read(pszBuffer, 1024); 

		while(nRead > 0)
		{
			strHtml += CString(pszBuffer, nRead);
			nRead = pHttpFile->Read(pszBuffer, 1024);
		}
		delete []pszBuffer;
	}
	if(pHttpFile != NULL)
	{
		pHttpFile->Close();
		delete pHttpFile;
		pHttpFile = 0;
	}
	if(pHttpConnection != NULL)
	{
		pHttpConnection->Close();
		delete pHttpConnection;
		pHttpConnection = 0;
	}
	session.Close();
	return;
}


 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值