libcpr / cpr 使用方法和构建指南

1,355 阅读4分钟

DocumentationCIGitter

公告

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

文档

Documentation
你可以在这里找到最新的文档。这是一个正在进行的工作,但它应该比目前的测试更能让你了解如何使用这个库。

特点

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 仓库创建一个问题或拉动请求