发布 | 分钟。 C++ 标准 | 地位 | 笔记 |
---|---|---|---|
掌握 | cpp17 | ||
1.11.x | cpp17 | ||
1.10.x | cpp17 | ||
1.9.x | cpp11 | 支持至 2025 年 1 月 1 日 | |
<= 1.8.x | cpp11 |
C++ Requests 是 libcurl 的一个简单包装器,其灵感来自优秀的 Python Requests 项目。
尽管它的名字如此,libcurl 的界面却一点也不简单,而且犯错误、误用它是错误和挫败感的常见根源。该库使用C++17
(或C++11
,如果您使用 cpr < 1.10.0)更具表现力的语言设施,捕捉了将网络调用转换为一些简洁的习惯用法的本质。
这是一个快速 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 ;
}
这是功能较少、更复杂的代码,没有心肺复苏。
您可以在此处找到最新文档。这是一项正在进行的工作,但它应该能让您比当前的测试更好地了解如何使用该库。
C++ 请求当前支持:
有关计划功能的快速概述,请查看下一个里程碑。
如果您已经有一个需要集成 C++ 请求的 CMake 项目,主要方法是使用fetch_content
。将以下内容添加到您的CMakeLists.txt
。
include (FetchContent)
FetchContent_Declare(cpr GIT_REPOSITORY https://github.com/libcpr/cpr.git
GIT_TAG dec9422db3af470641f8b0d90e4b451c4daebf64) # Replace with your desired git commit from: https://github.com/libcpr/cpr/releases
FetchContent_MakeAvailable(cpr)
这将生成目标cpr::cpr
,您可以通过典型方式链接它:
target_link_libraries (your_target_name PRIVATE cpr::cpr)
应该这样做!无需自己处理libcurl
。所有依赖项都会为您处理好。所有这些都可以在此处的示例中找到。
如果您不想使用fetch_content
,您可以下载、构建并安装该库,然后使用 CMake find_package()
函数将其集成到项目中。
注意:此功能仅在设置 CPR_USE_SYSTEM_CURL 时才可行。 (参见#645)
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_USE_SYSTEM_CURL=ON
cmake --build . --parallel
sudo cmake --install .
如果您想在 cpr 的静态版本或共享版本之间切换,则可以使用“-DBUILD_SHARED_LIBS=ON/OFF”。
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_USE_SYSTEM_CURL=ON -DBUILD_SHARED_LIBS=OFF
cmake --build . --parallel
sudo cmake --install .
在你的CMakeLists.txt
中:
find_package (cpr REQUIRED)
add_executable (your_target_name your_target_name.cpp)
target_link_libraries (your_target_name PRIVATE cpr::cpr)
cpr
提供了一系列可以通过以下命令执行的测试。
git clone https://github.com/libcpr/cpr.git
cd cpr && mkdir build && cd build
cmake .. -DCPR_BUILD_TESTS=ON # There are other test related options like 'CPR_BUILD_TESTS_SSL' and 'CPR_BUILD_TESTS_PROXY'
cmake --build . --parallel
ctest -VV # -VV is optional since it enables verbose output
请参考 hedronvision/bazel-make-cc-https-easy。
或者,您可以安装特定于您的 Linux 发行版的软件包。由于目前很少有发行版提供 cpr 软件包,因此大多数用户将无法使用这种方法运行您的程序。
目前,我们知道以下发行版的软件包:
如果没有适合您的发行版的软件包,请尝试制作一个!如果您这样做,并且它已添加到您的发行版的存储库中,请提交拉取请求以将其添加到上面的列表中。但是,请仅在您计划主动维护该软件包时才执行此操作。
对于 Windows,还有一个可用的 libcpr NuGet 包。目前,发布和调试配置支持 x86 和 x64 版本。
该包可以在这里找到:NuGet.org
在 macOS 上,您可以通过 MacPorts.org 安装 cpr(arm64、x86_64、powerpc)
在 FreeBSD 上,您可以发出pkg install cpr
或使用 Ports 树来安装它。
唯一明确的要求是:
C++17
兼容编译器,例如 Clang 或 GCC。 GCC 所需的最低版本未知,因此如果有人在使用特定版本的 GCC 构建此库时遇到问题,请告诉我们C++11
兼容编译器可用,则 cpr 1.9.x 以下的所有版本都适合您。 cpr 1.10.0 版本要求切换到C++17
。OpenSSL
及其开发库。>= 7.64.0
。不支持较低版本。这意味着您需要 Debian >= 10
或 Ubuntu >= 20.04 LTS
。 您可以使用 vcpkg 依赖项管理器下载并安装 cpr:
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh
./vcpkg integrate install
./vcpkg install cpr
vcpkg 中的cpr
端口由 Microsoft 团队成员和社区贡献者保持最新。如果版本已过时,请在 vcpkg 存储库上创建问题或拉取请求。
您可以使用 Conan 包管理器下载并安装cpr
。设置 CMakeLists.txt(有关如何使用 MSBuild、Meson 等的信息,请参阅 Conan 文档)。可以在此处找到示例。
Conan 中的cpr
包由 Conan 贡献者保持最新。如果版本已过时,请在conan-center-index
存储库上创建问题或拉取请求。