锐英源软件
第一信赖

精通

英语

开源

擅长

开发

培训

胸怀四海 

第一信赖

当前位置:锐英源 / 开源技术 / httplib完善易用HTTP库、httplib开源社区、httplib要点学习
联系方式
固话:0371-63888850
手机:138-0381-0136
Q Q:396806883
微信:ryysoft

httplib完善易用HTTP库、httplib开源社区、httplib要点学习


httplib是完善易用的HTTP库,只用一个头文件就支持了HTTP协议,还包含有SSL的支持,锐英源软件用OPENSSL开发过产品,深知SSL的处理有很多细节,个人从0开发支持SSL的HTTPS协议是很困难的,所以说httplib有非常大的价值,锐英源软件在研究gsoap时也遇到了SSL的代码,对于SSL的细节掌握有一些。从HTTP到HTTPS,是两个不同的定位,HTTPS难的多,很多朋友说自己编程水平提高太慢,可以学习SSL和HTTPS的开发,学成了水平也就上去了。

httplib里封装了HTTP/HTTPS服务器和客户端代码,httplib也跟随协议标准的提升来更新代码,里面也大量应用了C++新标准代码,所以httplib要点学习值得推荐给大家,比如下面客户端的代码:。

	httplib::Headers h = {
		{"Content-Type", "text/html"},
	};
	httplib::Client a("http://cpp-httplib-server.yhirose.repl.co");
	a.set_default_headers(h);
	a.set_proxy(sip, m_iProxyPort);

	if (m_sBridgeUser.GetLength() > 0)
	{
		string suser = WString2String(m_sBridgeUser.GetBuffer());
		string spass = WString2String(m_sBridgePass.GetBuffer());
		a.set_proxy_basic_auth(suser, spass);
	}
		a.Get("/hi", [&](const char* data, size_t data_length) {
			wstring sget = StringToWstring( string(data, data_length));
			AfxMessageBox(sget.c_str());
			return true;
			});

Headers是multimap类型,用insert添加是编译通过不了,但是用定义语句={}进行初始化就非常简单。

[&]是std::function类型的体现,a.Get行从逗号后到)前,类似于匿名函数,{}里是函数代码,在Get请求结束时,调用这个匿名函数代码,函数参数data和data_length包含了http客户端请求的结果。

最近锐英源软件开发代理ip服务器功能,所以用到了代理,里面的set_proxy和set_proxy_basic_auth就是代理方面的函数。

httplib功能和机器环境没有关系,不像某些HTTP库,会使用InternetOpen这样的函数,受操作系统的环境影响,不好控制。

httplib的客户端还能给出一个SOCKET进行控制,不像InternetOpen这类库,封装的严格不好定制开发。

但是httplib客户端代码没封装CONNECT请求,这是一个小漏洞,希望以后改进。

本网页会逐渐增加一些httplib里C++代码的剖析,请大家收藏常来。

httplib开源社区
  
友情链接
版权所有 Copyright(c)2004-2021 锐英源软件
公司注册号:410105000449586 豫ICP备08007559号 最佳分辨率 1024*768
地址:郑州大学北校区院(文化路97号院)内南门附近