【C++】开源:网络请求库cpr配置与使用

news/2024/7/10 22:12:47 标签: c++, 开源, 网络

😏★,°:.☆( ̄▽ ̄)/$:.°★ 😏
这篇文章主要介绍网络请求库cpr配置与使用。
无专精则不能成,无涉猎则不能通。——梁启超
欢迎来到我的博客,一起学习,共同进步。
喜欢的朋友可以关注一下,下次更新不迷路🥞

文章目录

    • :smirk:1. 项目介绍
    • :blush:2. 环境配置
    • :satisfied:3. 使用说明

😏1. 项目介绍

官网:https://docs.libcpr.org/

Github地址:https://github.com/libcpr/cpr

CPRC++ Requests)是一个现代化的、轻量级的、功能强大的C++网络请求库,用于进行HTTP请求和处理HTTP响应。它提供了简洁且易于使用的API,使开发人员能够以简单的方式执行HTTP请求并处理响应。

以下是CPR库的一些特点和功能:

1.轻量级和易于使用:CPR具有简单而直观的API设计,使您能够轻松地执行常见的HTTP请求,如GET、POST、PUT和DELETE等。

2.多种请求参数设置:您可以设置请求的URL、请求头、请求体、查询参数、超时时间等各种请求参数。这使得您可以根据需要进行灵活的配置。

3.异步和同步请求:CPR支持异步和同步两种方式进行请求。您可以选择适合您应用程序的方式来执行请求。

4.响应处理和错误处理:CPR提供了处理HTTP响应的丰富功能,包括获取响应状态码、响应头、响应体等。它还提供了错误处理机制,以便在出现错误时进行适当的处理。

5.文件上传和下载:CPR支持文件上传和下载功能,使您能够方便地进行文件的传输操作。

6.支持各种平台:CPR可以在多种平台上运行,包括Windows、Linux和macOS等。

😊2. 环境配置

下面进行环境配置:

# 源码安装
sudo apt install build-essential cmake libcurl4-openssl-dev libssl-dev
git clone https://github.com/libcpr/cpr
mkdir build
cd build
cmake ..
make
sudo make install
# 编译
g++ -std=c++17 -o main main.cpp -lcpr

😆3. 使用说明

HTTP请求与响应示例:

// Get
#include <cpr/cpr.h>
#include <iostream>

int main(int argc, char** argv) {
    cpr::Response r = cpr::Get(cpr::Url{"https://api.github.com/repos/libcpr/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
    std::cout << "status_code: " << r.status_code << std::endl;
    std::cout << "header: " << r.header["content-type"] << std::endl;
    std::cout << "text: " << r.text << std::endl;
}
// Post
#include <iostream>
#include <cpr/cpr.h>

int main() {
    // 构造要发送的JSON数据
    std::string json_data = R"({"name": "John", "age": 30})";

    // 发起POST请求 
    cpr::Response response = cpr::Post(cpr::Url{"https://api.github.com/repos/libcpr/cpr/contributors"}, cpr::Body{json_data});

    // 检查请求是否成功
    if (response.status_code == 200) {
        std::cout << "请求成功!" << std::endl;
        std::cout << "响应内容:" << response.text << std::endl;
    } else {
        std::cout << "请求失败!错误代码:" << response.status_code << std::endl;
        std::cout << "错误信息:" << response.error.message << std::endl;
    }

    return 0;
}

在这里插入图片描述

以上。


http://www.niftyadmin.cn/n/5263129.html

相关文章

微服务技术 RabbitMQ SpringAMQP P61-P76

B站学习视频https://www.bilibili.com/video/BV1LQ4y127n4?p61&vd_source8665d6da33d4e2277ca40f03210fe53a 文档资料: 链接&#xff1a;https://pan.baidu.com/s/1P_Ag1BYiPaF52EI19A0YRw?pwdd03r 提取码&#xff1a;d03r 一 初始MQ 1. 同步通讯 2. 异步通讯 3. MQ常…

YashanDB 携智慧政务方案亮相数字政府建设与数字湾区发展成果博览会

由广东省人民政府主办的第二届数字政府建设峰会暨数字湾区发展成果博览会于 12月8日-10日在广州举办。作为数字政府、智慧城市建设的核心支撑力量&#xff0c;深算院携单机/主备、共享集群、空间数据库等 YashanDB系列产品亮相本次博览会&#xff0c;展示最新的研发成果、场景应…

JupyterHub 如何切换 conda 小环境

JupyterHub 如何切换 conda 小环境 服务器已经部署好 JupyterHub &#xff0c;相关端口请看对应答疑群群公告。在Jupyterhub 中使用 conda 创建的小环境&#xff0c;首先 ssh 登录上服务器或者在 JupyterHub 网页端打开终端 terminal。然后安装 conda &#xff0c;方法请见 Q4&…

用队列实现栈,力扣

题目地址&#xff1a; 225. 用队列实现栈 - 力扣&#xff08;LeetCode&#xff09; 难度&#xff1a;简单 今天刷用队列实现栈&#xff0c;大家有兴趣可以点上看看题目要求&#xff0c;试着做一下。 题目&#xff1a; 我们直接看题解吧&#xff1a; 解题方法&#xff1a; 方法…

ArcGIS导入excel中的经纬度信息,绘制矢量

1.首先整理坐标信息 2.其次转成2003格式的excel文件 3.导入arcgis&#xff0c;点击右键添加excel数据 4.显示xy数据 5.显示经度和纬度信息 6&#xff1a;点击【地理坐标系】->【World】->【WGS 1984】->【确定】 7.投影带的确定方式&#xff1a; 因为自己一直…

Java中使用EasyExcel写excel文件

1、公式 package com.web.report.handler;import com.alibaba.excel.context.WriteContext; import com.alibaba.excel.metadata.csv.CsvCellStyle; import com.alibaba.excel.metadata.data.WriteCellData; import com.alibaba.excel.write.handler.CellWriteHandler; import…

微信小程序uniapp记住密码

记住密码功能 在请求登录接口成功后&#xff0c;我们需要判断用户是否勾选记住密码&#xff0c;如果是&#xff0c;则将记住密码状态、账号信息存入本地。 下次登录时&#xff0c;获取本地的记住密码状态&#xff0c;如果为true则获取本地存储的账号信息&#xff0c;将信息回填…

【Qt】点击QTreeWidget空白处,使当前选择的Item失效

原因 有时在开发中&#xff0c;可能会对QTreeWidget进行操作&#xff0c;当点击feiQTreeWidgetItem时&#xff0c;需要焦点取消&#xff0c;无Item选中。 解决方案 可以通过设置事件过滤器进行实现。 1.QtreeWidget安装事件过滤器 ui->treeWidget->viewport()->i…