公告
- 就像你可能已经注意到的那样,
cpr
搬到了一个新家,从github.com/whoshuu/cpr到github.com/libcpr/cpr。 在这里阅读更多信息。 - 这个项目由Fabian Sauter和Kilian Traub 维护。
- 对于快速帮助和讨论,libcpr也提供了一个gitter聊天。
TLDR
C++ Requests是一个围绕libcurl的简单包装,灵感来自于优秀的Python Requests项目。
尽管它的名字,libcurl的简单界面并不简单,错误地使用它是一个常见的错误和挫折的来源。使用C++11中更有表现力的语言设施,这个库将网络调用的精髓捕捉到了一些简洁的习语中。
这里是一个快速的GET请求。
#include <cpr/cpr.h>
int main(int argc, char** argv) {
cpr::Response r = cpr::Get(cpr::Url{"https://api.github.com/repos/whoshuu/cpr/contributors"},
cpr::Authentication{"user", "pass", cpr::AuthMode::BASIC},
cpr::Parameters{{"anon", "true"}, {"key", "value"}});
r.status_code; // 200
r.header["content-type"]; // application/json; charset=utf-8
r.text; // JSON text string
return 0;
}
下面是一个功能较少、较复杂的代码,没有cpr。
文档
你可以在这里找到最新的文档。这是一个正在进行的工作,但它应该比目前的测试更能让你了解如何使用这个库。
特点
C++ Requests目前支持:
- 自定义头文件
- Url编码的参数
- Url编码的POST值
- 多部分表单POST上传
- 文件POST上传
- 基本认证
- 承载认证
- 文摘认证
- NTLM认证
- 连接和请求超时规范
- 低速连接的超时
- 异步请求
- 支持!
- 代理人支持
- 回调接口
- PUT方法
- DELETE方法
- HEAD方法
- OPTIONS方法
- PATCH方法
- 对libCurl的线程安全访问
- 对HTTPS请求的OpenSSL和WinSSL支持
计划中的
要快速了解计划中的功能,请看下面的里程碑。
使用方法
CMake
如果你已经有一个CMake项目需要集成C++请求,主要方法是使用fetch_content
。将以下内容添加到你的CMakeLists.txt
。
include(FetchContent)
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git
GIT_TAG 871ed52d350214a034f6ef8a3b8f51c5ce1bd400) # The commit hash for 1.9.0. Replace with the latest from: https://github.com/libcpr/cpr/releases
FetchContent_MakeAvailable(cpr)
这将产生目标cpr::cpr
,你可以用典型的方式进行链接。
$ git clone https://github.com/libcpr/cpr.git
$ cd cpr && mkdir build && cd build
$ cmake .. -DCPR_USE_SYSTEM_CURL=ON
$ cmake --build .
$ sudo cmake --install .
这应该就可以了!没有必要自己去处理libcurl
。所有的依赖性都为你解决了。
所有这些都可以在一个例子中找到 这里.
用于Linux发行版的软件包
另外,你也可以安装一个特定于你的Linux发行版的软件包。由于目前很少有发行版有cpr的软件包,大多数用户将不能用这种方法运行你的程序。
目前,我们知道有以下发行版的软件包。
如果你的发行版没有软件包,试着制作一个吧如果你做了,并且它被添加到你的发行版的仓库中,请提交一个拉动请求,把它添加到上面的列表中。然而,只有当你打算积极维护该软件包时,才请这样做。
NuGet包
对于 Windows,也有一个 libcpr NuGet 包可用。目前支持x86和x64版本的发布和调试配置。
该软件包可以在这里找到。NuGet.org
要求
唯一明确的要求是。
- 一个
C++11
兼容的编译器,如Clang或GCC。GCC的最低要求版本尚不清楚,所以如果有人在用特定版本的GCC构建这个库时遇到问题,请告诉我。 - 如果你想执行https请求,
OpenSSL
和它的开发库是必需的。
构建cpr - 使用vcpkg
你可以使用vcpkg依赖性管理器下载并安装cpr。
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
vcpkg中的cpr
端口是由微软团队成员和社区贡献者保持更新的。如果版本过期,请在vcpkg仓库中创建一个问题或拉动请求。
构建cpr - 使用指南
你可以使用Conan软件包管理器下载并安装cpr
。设置你的CMakeLists.txt(参见Conan文档中关于如何使用MSBuild,Meson和其他的)。可以找到一个例子 这里.
Conan中的cpr
软件包是由Conan的贡献者保持更新的。如果版本过期,请在conan-center-index
仓库创建一个问题或拉动请求。