C++的post请求(使用的是CInternetSession)

今天项目需要抓取官网软件的版本号,并升级提示,需要用到MFC的post模块

从网上看到的例子,并做了一些修改

// WebPost.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


//int _tmain(int argc, _TCHAR* argv[])
//{
//	return 0;
//}


#include  <iostream>
#include  <string>
#include <afxinet.h> //定义了MFC CInternetSession类等   
bool PostHttpPage(const CString& hostName, const CString& pathName, const std::string& postData) 
{ 
	using namespace std;   
	CInternetSession session(_T("your app agent name"));   
	try 
	{ 
		INTERNET_PORT nPort = 80; 
		DWORD dwRet = 0;   
		CHttpConnection* pServer = session.GetHttpConnection(hostName, nPort); 
		CHttpFile* pFile = pServer->OpenRequest(CHttpConnection::HTTP_VERB_POST, pathName);   
		CString strHeaders = _T("Content-Type: application/x-www-form-urlencoded"); // 请求头   
		//开始发送请求   
		pFile->SendRequest(strHeaders,(LPVOID)postData.c_str(),postData.size()); 
		pFile->QueryInfoStatusCode(dwRet);     
		if (dwRet == HTTP_STATUS_OK) 
		{ 
			CString result, newline;   
			while(pFile->ReadString(newline)) 
			{
				//循环读取每行内容 
				result += newline+"\r\n"; 
			}   
			std::cout<<result<<std::endl;//显示返回内容 
		} 
		else 
		{ 
			return false; 
		} 
		delete pFile; 
		delete pServer;   
	} 
	catch (CInternetException* pEx) 
	{ 
		//catch errors from WinInet 
		TCHAR pszError[200]; 
		pEx->GetErrorMessage(pszError, 200);   
		std::cout<<pszError<<std::endl;//显示异常信息 
		return false; 
	} 
	session.Close();   
	return true; 
}   
int main(void) 
{
	//向http://current.sinaapp.com/post.php发送数据
	PostHttpPage(_T("current.sinaapp.com"),_T("post.php"),"name=rain&age=12"); 
}


这只是简单的一个例子,后续项目完毕再做更新(涉及到关键字的查询,版本的比较)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值