本文主要是介绍C++ Http访问Cpr开源库编译,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
Cpr开源库编译
Cpr是一个简单好用Http访问开源库,它是对Curl库进行第二次封装,所以对于基本的Http访问很简单,也支持HTTPS的方式,不过无法自己加载证书,只能设置不验证证书:
比如Get请求:
auto r = cpr::Get(cpr::Url{"http://www.httpbin.org/get"},cpr::Parameters{{"hello", "world"}}); // Url object before Parameters
Post请求:
auto r = cpr::Get(cpr::Parameters{{"hello", "world"}},cpr::Url{"http://www.httpbin.org/get"}); // Parameters object before Url
但是编译时也是很坑爹,不像某些库只要简单的Cmake就行。
下面是编译的过程:(系统:Win10,IDE:VS2017,Cmake 3.9)
Cpr是对Curl的第二次封装,所以它是依赖于Curl的,而要进行Https访问,又需要用到Openssl。所以要编译Cpr,我们还需要先编译Curl和Openssl。
1.编译Openssl
opensll有好多个版本,目前我看到官网有1.0.2和1.1.0版本,这两个版本编译出来的文件都不一样,但是好像都可以用,
我使用的是1.0.2版本,1.1.0还没有测试(但是我单边在vs下编译Curl这两个可以用的,不过Cmake我还没有试)
下面试编译方法(我是引用他人的博客,里面讲的很清楚):
1.1.0
1.0.2
当编译好了一之后会有几个文件夹(我用的是1.0.2版本):
设置环境变量OPENSSL_ROOT_DIR值为编译文件的路径比如我的F:\openssl_lib1-1.0.2p。 注意环境变量需要重启才生效。
2.编译Cpr
Cpr源码里面已经帮我们包含了Curl的源码,所以我们不需要单独编译Curl,编译Cpr时就会帮我们自动编译Curl。
Cpr源码目录结构:
这里面有一个opt的文件夹,这个就是cpr所依赖的库:
里面可以看到curl文件夹,这就是curl库,googletest是谷歌的单元测试库,具体的我也不了解,不过对我们作用不大。
mongoose好像是轻量的c++ http服务器库。
现在是Cmake,在cpr目录下新建build文件夹。
假如没有安装Cmake, 那就到这里下载 安装好了记得为cmake.exe配置坏境变量。
打开命令行到cpr下的build目录,输入cmake .. 命令即可,接下来就是等待编译完成。(在此过程中我暂时未遇到问题)
编译完成之后我们可以在Build下看到完整的VS项目。
打开vs项目可以看到下图项目结构:
libcurl为curl库的项目,cpr为cpr项目,其余的不用管。
我们可以直接编译libcurl项目和cpr项目就行,其余的不管,libcurl默认是编译为动态库,cpr为静态库。
编译好了直接拿cpr的头文件和编译出来文件到新项目中去可以直接使用(这里不详细说了)。
假如我们像让libcurl编译成静态库,那就需要将libcurl配置为静态库编译,以及到libcurl项目和cpr项目的预处理器中添加CURL_STATICLIB
这样之后编译即可,编译后会有libcurl.lib和cpr.lib。也直接拿到新项目中去使用就行,但是由于libcurl是静态编译的
因此还需要链接其他文件。
红色框里面的是如教程所示,编译的几个lib文件,其余的是系统自带的,直连链接即可。
例子:
#include "stdafx.h"
#include"cpr/cpr.h"
#include<iostream>
int main()
{//测试http访问是否有效用的网站https://www.httpbin.org/getauto response = cpr::Get(cpr::Url{ "https://www.httpbin.org/get" },cpr::Parameters{{ "hello", "world" } },cpr::VerifySsl(false));std::cout << response.text << std::endl;return 0;
}
输出结果:
{"args": {"hello": "world"},"headers": {"Accept": "*/*","Connection": "close","Host": "www.httpbin.org","User-Agent": "curl/7.56.0-DEV"},"origin": "183.11.131.134","url": "https://www.httpbin.org/get?hello=world"
}
到此cpr编译结束。
这篇关于C++ Http访问Cpr开源库编译的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!