VC++ Http Get Post封装类

2023-05-16

/************************Http: Get、Post的封装类***************/

#include   "wininet.h"  
#include   "afxinet.h"

/*********************类定义***********************************/
class   CHttpClient      
{  
public:  
	void   addParam(CString   name,CString   value);  
	CString   doPost(CString   href);  
	CString   doGet(CString   href);  
	CHttpClient();  
	virtual   ~CHttpClient();  
private:  
	CString   CONTENT;  
	int   CL;  
	CStringList   values;  
	CStringList   names;  
};  
 
/*************************类实现********************************/
// 添加字段
void   CHttpClient::addParam(CString   name,   CString   value)  
{  
	names.AddTail((LPCTSTR)name);  
	values.AddTail((LPCTSTR)value);  
	CString   eq="=";  
	CString   an="&";  
	CONTENT=CONTENT+name+eq+value+an;  
	CL=CONTENT.GetLength();  
}   
// 以http Get方式请求URL
CString   CHttpClient::doGet(CString   href)  
{  
	CString   httpsource="";  
	CInternetSession   session1(NULL,0);  
	CHttpFile*   pHTTPFile=NULL;  
	try{  
		pHTTPFile=(CHttpFile*)session1.OpenURL(href);  
		//session1.  
	}
	catch(CInternetException)
	{  
		pHTTPFile=NULL;  
	}  
	if(pHTTPFile)  
	{  
		CString   text;  
		for(int   i=0;pHTTPFile->ReadString(text);i++)  
		{  
			httpsource=httpsource+text+"\r\n";  
		}  
		pHTTPFile->Close();  
		delete   pHTTPFile;  
	}else  
	{  
		
	}  
	return   httpsource;  
}  
// 以Http Post方式请求URL
CString   CHttpClient::doPost(CString   href)  
{  
	CString   httpsource="";  
	CInternetSession   session1;  
	CHttpConnection*   conn1=NULL;  
	CHttpFile*   pFile   =   NULL;      
	CString   strServerName;  
	CString   strObject;  
	INTERNET_PORT   nPort;  
	DWORD   dwServiceType;  
	AfxParseURL((LPCTSTR)href, dwServiceType, strServerName, strObject, nPort);  
	DWORD   retcode;              
	char*   outBuff   =   CONTENT.GetBuffer(1000);  
	try      
	{                  
		conn1   =   session1.GetHttpConnection(strServerName, nPort);          
		pFile   =   conn1->OpenRequest(0,strObject,NULL,1,NULL,"HTTP/1.1",INTERNET_FLAG_EXISTING_CONNECT|INTERNET_FLAG_NO_AUTO_REDIRECT);          
		pFile   ->   AddRequestHeaders("Content-Type:   application/x-www-form-urlencoded");          
		pFile   ->   AddRequestHeaders("Accept:   */*");                          
		pFile   ->   SendRequest(NULL,0,outBuff,strlen(outBuff)+1);                  
		pFile   ->   QueryInfoStatusCode(retcode);                  
	}                            
	catch   (CInternetException   *   e){};                  
	if(pFile)  
	{  
		CString   text;  
		for(int   i=0;pFile->ReadString(text);i++)  
		{  
			httpsource=httpsource+text+"\r\n";  
		}  
		pFile->Close();  
	}else  
	{  
		// do anything.....
	}  
	return   httpsource;  
	delete   pFile;          
	delete   conn1;          
	session1.Close();  
}  

// 使用范例
int main ()
{
  //get方式  
  CHttpClient   conn;  
  CString   value="http://xxx.com/test.asp";  
  value=conn.doGet(value);  

  //post方式  
  CHttpClient   conn;  
  value="http://xxx.com/test.asp";  
  conn.addParam("name1","value1");  
  conn.addParam("name2","value2");  
  conn.addParam("name3","value3");  
  value=conn.doPost(value);   
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VC++ Http Get Post封装类 的相关文章

随机推荐

  • 超好看的个人主页官网源码+带动态特效

    正文 这款个人主页源码感觉是我有史以来见过最好看的 xff0c 功能和页面也比较多 xff0c 简约又不失格调 官网带动态特效视频源码 xff0c 修改主页文件即可 程序 wwvwd lanzouw com i6RWe0ag8gde 图片
  • A2W、W2A、A2T、T2A的使用方法

    1 A2W和W2A 在 Window核心编程 xff0c 多字节和宽字节之间转换比较麻烦的 xff0c MultiByteToWideChar函数和WideCharToMultiByte函数有足够多的参数的意义让我们去理解 那么使用ATL的
  • C语言中int到float的强制类型转换

    最近在看一本名为的书 由于我所看过的计算机理论方面的书较少 xff0c 加上自己大学期间一直也不用功 xff0c 所以对于计算机的工作原理以及程序的工作方式我始终只知甚少 xff0c 印象也十分模糊 不过 xff0c 应该说我碰到了一本好书
  • MFC中如何将焦点设置到指定控件上

    MFC中如何将焦点设置到指定控件上 需求 xff1a 窗口打开的时候就将焦点 xff08 光标 xff09 设置到某个指定的控件上去 实现方法 xff1a 设置焦点需要用到setFocus这个方法 xff08 几乎任何编程环境都这样VC x
  • _tcschr、_tcsrchr

    tcschr tcsrchr 好处 xff1a 是可以不管是用unicode 编码还是其他 代码都不用改 C 43 43 标准库函数提供了字符和字符串的操作函数 xff0c 并提供了其UNICODE版本 xff0c 如 xff1a 1 tc
  • vc++ 6.0编译后生成的文件

    vc 43 43 6 0编译后生成的文件 程序在编译后 在目标路径下会生成多个文件 Debug文件夹 exe ilk obj pch pdb idb pdb cpp dsp ncb plg exe 是生成的可执行文件 ilk 当选定渐增型编
  • 除了pid还有什么控制算法,类似pid算法还有哪些

    什么是专家PID xff1f 他和传统的PID有什么区别 xff1f PID是智能控制啊 比如要控制一个水管的水流量 通过流量计 开关阀 让PID来控制开关阀的开关大小使水流量正确 专家PID记得是PID的高级设置 某些个场合一般的PID无
  • c++编译错误:invalid new-expression of abstract class type

    error invalid new expression of abstract class type UserdataActionI 原因 xff1a 出现这个错误原因是new 了一个抽象类出错 xff0c 说明父类 xff08 接口 x
  • Servlet jsp跳转到Servlet 出现404错误的路径设置方法

    jsp跳转到Servlet 出现404错误的路径设置方法 解决一 xff1a 最近又遇到了这种问题 xff0c 百度了好久 xff0c 发现有人说要在action的路径里面写Servlet文件的绝对路径 xff0c 比如说 xff0c 单独
  • 产品经理做APP从头到尾的所有工作流程详解!

    xff08 一 xff09 项目启动前 从事产品的工作一年多 xff0c 但自己一直苦于这样或者那样的困惑 xff0c 很多人想要从事产品 xff0c 或者老板自己创业要亲自承担产品一职 xff0c 但他们对产品这个岗位的认识却不明晰 xf
  • 使用阿里云搭建自己的原型发布站点

    最近在做项目时 xff0c 使用了Axure团队协同工具 AxureShare 时 xff0c 发现了一个问题 xff1a 由于AxureShare服务器在国外 xff0c Axure共享生成的链接访问时非常慢 xff0c 网上找了很多解决
  • 【FTP工具linux错误】Job for vsftpd.service failed because the control process exited with error code

    环境 xff1a 阿里云centos7 2搭建ftp 问题 xff1a 启动vsftpd服务 xff0c 报错 xff1a Job for vsftpd service failed because the control process
  • 【FileZilla错误】500 OOPS: could not read chroot() list file:/etc/vsftpd/chroot_list

    环境 xff1a ECS里 Centos 7 2 安装了vsftpd Windows安装了FileZilla 问题 xff1a 当链接时报错 xff1a 500 OOPS could not read chroot list file et
  • VirtualBox通过恢复备份快照VDI文件恢复至备份状态

    昨天很贱 xff0c 看到服务器的VB的快照 xff08 SnapShot xff09 是放在C盘的 xff0c 然后C盘的35G空间被这个快照用掉了14G xff0c 加上系统的18G xff0c 还剩3G的空间 关闭VB xff0c 然
  • 关于机器人操作系统(ROS)学习前须知二三

    ROS基础资料 1 什么是ROS xff1f ROS xff08 机器人操作系统 xff0c Robot Operating System xff09 xff0c 是专为机器人软体开发所设计出来的一套电脑作业系统架构 它是一个开源的元级操作
  • SLAM/VIO学习总结

    作者 xff1a 游振兴 链接 xff1a https zhuanlan zhihu com p 34995102 来源 xff1a 知乎 著作权归作者所有 商业转载请联系作者获得授权 xff0c 非商业转载请注明出处
  • 大数据领域三个大的技术方向资料

    大数据领域三个大的技术方向 xff1a 1 Hadoop大数据开发方向 2 数据挖掘 数据分析 amp 机器学习方向 3 大数据运维 amp 云计算方向 大数据学习什么 Python xff1a Python 的排名从去年开始就借助人工智能
  • 深度神经网络的应用

    深度学习能应用在哪些领域 xff1f 深度学习的快速发展 xff0c 不仅使机器学习得到许多实际的应用 xff0c 还拓展了整个AI xff08 人工智能的 xff09 的范围 它将任务进行拆解 xff0c 使得各种类型的机器辅助变成可能
  • Linux中安装ruby

    在安装redis 集群的时候需要用到ruby 下载安装包 wget https cache ruby lang org pub ruby 2 4 ruby 2 4 5 tar gz 解压文件 tar xzvf ruby2 4 5 编译 co
  • VC++ Http Get Post封装类

    Http Get Post的封装类 include 34 wininet h 34 include 34 afxinet h 34 类定义 class CHttpClient public void addParam CString nam