【C++】开源:cpp-httplib HTTP协议库配置与使用

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

文章目录

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

😏1. 项目介绍

项目Github地址:https://github.com/yhirose/cpp-httplib

cpp-httplib是一个C++编写的开源HTTP客户端/服务器库,用于处理HTTP请求和响应。它提供了简单易用的接口和功能,使开发者能够轻松地构建基于HTTP协议的应用程序。

以下是cpp-httplib的一些关键特点和功能:

1.轻量级:cpp-httplib是一个轻量级的库,仅依赖于C++标准库,无需安装额外的依赖项。

2.简单易用的接口:cpp-httplib提供了简单直观的接口,使开发者能够方便地处理HTTP请求和响应。您可以轻松地创建服务器、处理路由、读取请求参数、设置响应头等。

3.客户端功能:cpp-httplib可以用作HTTP客户端,发送HTTP请求并接收响应。您可以设置请求头、请求参数、处理响应数据等。

4.SSL/TLS支持:cpp-httplib支持通过SSL/TLS进行安全的HTTP通信。您可以使用HTTPS协议进行加密通信,确保数据传输的安全性。

5.静态文件服务器:cpp-httplib提供了静态文件服务器的功能,可以轻松地将静态文件(如HTML、CSS、JavaScript、图像等)提供给客户端。

6.跨平台支持:cpp-httplib可在多个平台上运行,包括Windows、Linux和macOS等。

cpp-httplib是一个简单而功能丰富的C++ HTTP库,适用于构建各种基于HTTP协议的应用程序,如Web服务器、RESTful API、HTTP客户端等。

😊2. 环境配置

cpp-httplib是一个单头文件的c++库,因此在项目中只有加入该头文件httplib.h即可。

# 编译
g++ -o server server.cpp -lpthread
g++ -o client client.cpp -lpthread

😆3. 使用说明

HTTP请求/响应服务端和客户端示例:

// server.cpp
#include <iostream>
#include "httplib.h"void handle_post(const httplib::Request& req, httplib::Response& res) {// 获取请求体数据std::string body = req.body;// 在服务器端打印请求体数据std::cout << "Received POST request with body: " << body << std::endl;// 设置响应内容res.set_content("POST request received", "application/json");
}int main() {httplib::Server svr;svr.Get("/", [](const httplib::Request& req, httplib::Response& res) {res.set_content("Hello, World!", "text/plain");});svr.Get("/about", [](const httplib::Request& req, httplib::Response& res) {res.set_content("About page", "text/plain");});svr.Post("/api/users", handle_post);std::cout << "Server started on port 8080" << std::endl;svr.listen("localhost", 8080);return 0;
}
// client.cpp
#include <iostream>
#include "httplib.h"int main() {httplib::Client cli("localhost", 8080);// 发送GET请求auto res = cli.Get("/");if (res && res->status == 200) {std::cout << res->body << std::endl;}res = cli.Get("/about");if (res && res->status == 200) {std::cout << res->body << std::endl;}// 发送POST请求httplib::Headers headers = {{ "Content-Type", "application/json" }  // 设置请求头 MIME类型};std::string body = R"({"name": "John", "age": 30})";  // 请求体数据auto res2 = cli.Post("/api/users", headers, body, "application/json");if (res2 && res2->status == 200) {std::cout << "Request successful: " << res2->body << std::endl;} else {std::cout << "Request failed!" << std::endl;}return 0;
}

在这里插入图片描述

以上。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2659502.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

美国Top科技公司年薪大曝光,OpenAI 600万高居榜首!

全美顶尖AI公司年薪大曝光&#xff01; OpenAI 600万高居榜首&#xff0c;微软、英伟达只有OpenAI 的一半。 近日&#xff0c;美国一家帮助博士生协商薪资的公司Rora发布了一份薪资报告&#xff0c;公布了这些顶尖AI公司给研究人员开出的平均薪水。 以下是部分顶级AI公司的名…

《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识(11)

接前一篇文章&#xff1a;《PCI Express体系结构导读》随记 —— 第I篇 第1章 PCI总线的基本知识&#xff08;10&#xff09; 1.3 PCI总线的存储器读写总线事务 1.3.2 Posted和Non-Posted传送方式 PCI总线规定了两类数据传送方式&#xff0c;分别是Posted和Non-Posted数据传送…

数据仓库 基本信息

数据仓库基本理论 数据仓库&#xff08;英语&#xff1a;Data Warehouse&#xff0c;简称数仓、DW&#xff09;,是一个用于存储、分析、报告的数据系统。数据仓库的目的是构建面向分析的集成化数据环境&#xff0c;为企业提供决策支持&#xff08;Decision Support&#xff09…

【轻松入门】OpenCV4.8 + QT5.x开发环境搭建

引言 大家好&#xff0c;今天给大家分享一下最新版本OpenCV4.8 QT5 如何一起配置&#xff0c;完成环境搭建的。 下载OpenCV4.8并解压缩 软件版本支持 CMake3.13 或者以上版本 https://cmake.org/ VS2017专业版或者以上版本 QT5.15.2 OpenCV4.8源码包 https://github.com/op…

EDKII:第一个Helloworld

目录 0 说明 1 步骤 1.1 简介 1.2 创建新文件 1.3 创建printhelloworld.c、printhelloworld.inf&#xff1a; 1.4 修改MdeModulePkg\MdeModulePkg.dsc 1.5 修改EmulatorPkg\EmulatorPkg.dsc 1.6 运行 0 说明 上篇文章记录了如何安装UEFI环境&#xff0c;在这里将会写下…

启明智显开源项目分享|基于Model 3c芯片的86中控面板ZX3D95CM20S-V11项目软硬件全开源

前言&#xff1a; 本文为4寸 480*480 RGB接口IPS全面触屏的86中控面板&#xff08;RT-ThreadLVGL&#xff09;软硬件开源干货内容&#xff0c;该项目是综合性非常强的RTOS系列项目&#xff01;项目主控芯片使用 Model 3c&#xff0c;整体实现了简化版本的86中控面板的功能需求…

apisix admin api 403 Forbidden(接口请求403)

故事背景 当你通过admin api 接口方式执行相关操作时&#xff0c;例如route、upstream设置&#xff0c;接口返回403 Forbidden&#xff0c; 例如 请求 curl -i "http://192.168.100.1:9180/apisix/admin/routes" -H X-API-KEY: edd1c9f034335f136f87ad84b625c8f1 -X…

微软 Power Platform 零基础 Power Apps 解决查找字段多选问题无需写代码

微软 Power Platform 零基础 Power Apps 解决查找字段多选问题无需写代码 在开发Power Apps产品的过程中&#xff0c;我们经常遇到查找字段多选的问题&#xff0c;只想用字段显示&#xff0c;又不想用子网格&#xff0c;我们今天来寻找一种不用开发的方式来实现这个功能。 效果…

「年终总结」生成人工智能的奇妙年份

自我介绍 做一个简单介绍&#xff0c;酒架年近48 &#xff0c;有20多年IT工作经历&#xff0c;目前在一家500强做企业架构&#xff0e;因为工作需要&#xff0c;另外也因为兴趣涉猎比较广&#xff0c;为了自己学习建立了三个博客&#xff0c;分别是【全球IT瞭望】&#xff0c;【…

登录不上linux keyboard-inter

登录不上linux keyboard-inter. 可以用其他工具测试下&#xff1a;cmd 删除历史记住密码&#xff1a;

go 源码解读 - sync.Mutex

sync.Mutex mutex简介mutex 方法源码标志位获取锁LocklockSlowUnlock怎么 调度 goroutineruntime 方法 mutex简介 mutex 是 一种实现互斥的同步原语。&#xff08;go-version 1.21&#xff09; &#xff08;还涉及到Go运行时的内部机制&#xff09;mutex 方法 Lock() 方法用于…

JavaScript练习题第(四)部分

大家好关于JavaScript基础知识点已经发布&#xff1a;需要的大家可以去我的主要查看 &#xff08;当然了有任何不会的&#xff0c;可以私信我&#xff01;&#xff01;&#xff01;&#xff01;&#xff09; 为了巩固大家学习知识点给大家准备几道练习题&#xff1a; 当然&…

GPT-4 API惨遭美国加州实验室团队毒手,清纯工具被进行攻击测试,经坑蒙拐骗黑化成坏蛋

美国加州实验室FAR AI的团队在对GPT-4 API进行安全测试时&#xff0c;采用了三大方向的“红队”攻击&#xff0c;结果让他们大吃一惊&#xff0c;GPT-4居然成功被越狱。通过对15个有害样本和100个良性样本的微调&#xff0c;他们成功地使GPT-4降低了警惕&#xff0c;使其生成有…

低代码平台在金融银行中的应用场景

随着数字化转型的推进&#xff0c;商业银行越来越重视技术在业务发展中的作用。在这个背景下&#xff0c;白码低代码平台作为一种新型的开发方式&#xff0c;正逐渐受到广大商业银行的关注和应用。白码低代码平台能够快速构建各类应用程序&#xff0c;提高开发效率&#xff0c;…

BAQ压缩MATLAB仿真

本专栏目录: ​​​​​​​全球SAR卫星大盘点与回波数据处理专栏目录-CSDN博客 我们按照上一期文章的BAQ原理编写MATLAB代码,进行baq压缩与解压缩的全流程验证,并分析BAQ压缩对信号指标造成的影响。 生成3个点目标回波数据,加入高斯噪声,对回波进行BAQ压缩和解BAQ压缩,…

Spring Boot + Mybatis + vue2 — 实现分页查询

后端 pom.xml文件导入依赖 <!--分页查询--> <dependency><groupId>com.github.pagehelper</groupId><artifactId>pagehelper-spring-boot-starter</artifactId><version>1.4.6</version> </dependency> 配置全局配置…

flink内存配置

flink内存配置 配置 TaskManager 内存 | Apache Flink

java设计模式学习之【中介者模式】

文章目录 引言中介者模式简介定义与用途实现方式 使用场景优势与劣势在Spring框架中的应用聊天室示例代码地址 引言 想象一下一座忙碌的机场&#xff0c;各种飞机需要起飞、降落&#xff0c;而不同的飞行活动之间必须互不干扰。如果没有一个统一的控制系统&#xff0c;这将是一…

设计模式(4)--对象行为(6)--备忘录

1. 意图 在不破坏封装的前提下&#xff0c;捕获一个对象的内部状态&#xff0c;并在该对象之外保存这个状态。 这样以后可以将该对象恢复到原先保存的状态。 2. 三种角色 原发器(Originator)、备忘录(Memento)、负责人(Caretaker) 3. 优点 3.1 保持了封装边界。屏蔽了原发器的…

31.Java程序设计-基于Springboot的鲜花商城系统的设计与实现

引言 背景介绍&#xff1a;鲜花商城系统的兴起和发展。研究目的&#xff1a;设计并实现一个基于Spring Boot的鲜花商城系统。论文结构概述。 文献综述 回顾相关鲜花商城系统的设计与实现。分析不同系统的优缺点。强调Spring Boot在系统设计中的优越性。 系统设计 需求分析 用户…