当前位置: 首页 > news >正文

云备份——第三方库使用介绍(下)

httplib库,一个C++11单文件头的跨平台HTTP/HTTPS库。安装起来非常容易。只需包含httplib.h在你的代码中即可。

httplib库实际上是用于搭建一个简单的http服务器或者客户端的库,这种第三方网络库,可以让我们免去搭建服务器或客户端的时间,把更多的精力投入到具体的业务处理中,提高开发效率。

下面我们会逐步介绍一下httplib库的主要类

 一,MultipartForData结构体

    struct MultipartFormData {std::string name;//名字,注意不是文件名是该MultipartFormData个体的名字std::string content;//上传文件的内容std::string filename;//上传文件的名字std::string content_type;//上传文件内容的类};using MultipartFormDataItems = std::vector<MultipartFormData>;//MultipartFormData数组。可以存储多个MultipartFormData结构,也就是可以一下上传多个MultipartFormData

 该类主要用于管理客户端上传的文件信息的结构体

 二,Request以及Response结构体类详解

2.1 Request

Request类主要是客户端用于构建该类保存HTTP相关信息,然后等待构建对应HTTP客户端报文发送给服务端进行处理

 

2.2 Response

主要用于服务端接收到Request后,进行业务处理,然后构建Response保存HTTP服务端响应信息,然后等待服务端构建对应HTTP报文进行返回

三, 服务器(Server类)/客户端(Clinet类)构建

3.1 Server类

主要用来设置服务端在面对客户端不同请求的不同处理方式,以及Server的启动

 

3.2 Client类

四,简易服务器和客户端搭建

服务器

#include "httplib.h"
#include <iostream>int main()
{httplib::Server server;server.Get("/hello",[](const httplib::Request& req,httplib::Response& res){res.set_content("hello,I am server","text/plain");res.status=200;});server.Get(R"(/numbers/(\d+))",[&](const httplib::Request& req,httplib::Response& res){auto number=req.matches[1];res.set_content(number,"text/plain");res.status=200;});server.Post("/upload",[&](const httplib::Request& req,httplib::Response& res){if(!req.has_file("file1")){res.set_content("no fund","text/plain");res.status=404;}const auto& file=req.get_file_value("file1");std::string content=file.filename;content+='\n';content+=file.content;res.set_content(content,"text/plain");res.status=200;});server.listen("0.0.0.0",8080);return 0;
}

客户端

#include "httplib.h"
#include <iostream>int main()
{httplib::Client client("124.221.185.180",8080);httplib::MultipartFormData item;item.name="file1";item.content="hello,word";item.filename="test";item.content_type="text/plain";httplib::MultipartFormDataItems items;items.push_back(item);auto res=client.Post("/upload",items);std::cout<<res->body<<std::endl;std::cout<<res->status<<std::endl;return 0;
}

运行如下

http://www.lryc.cn/news/148365.html

相关文章:

  • springboot实战(一)之项目搭建
  • 线性代数的学习和整理16:什么是各种空间(类型),向量空间,距离(类型)?
  • css实现文字翻转效果
  • 19 Linux之Python定制篇-apt软件管理和远程登录
  • WebDAV之π-Disk派盘 + notototo
  • _kbhit() and getch() 在小游戏中用不了。因为控制台函数,仅在控制台程序中可用
  • dayjs格式转换成日期
  • mfc140u.dll丢失如何修复?解析mfc140u.dll是什么文件跟修复方法分享
  • STM32--SPI通信与W25Q64(2)
  • 微信小程序 校园周边美食商城分享系统
  • K8S - 架构、常用K8S命令、yaml资源清单部署、Ingress、故障排查、存储卷
  • micro benchmark 使用经验
  • nodejs发布静态https服务器
  • 国产系统下开发QT程序总结
  • 【Redis】redis入门+java操作redis
  • 无涯教程-Android - Spinner函数
  • 国标GB28181视频平台EasyGBS国标平台智能边缘计算网关关于小区电动车进电梯的应用方案设计
  • supervisorctl(-jar)启动配置设置NACOS不同命名空间
  • 如何解决 Out Of Memory 的问题
  • 代码随想录训练营二刷第九天 | 字符串结束
  • javaee spring jdbcTemplate的使用
  • qt day
  • Configurable Weather Parameters
  • MySQL 8 数据清洗总结
  • 设计模式第九讲:常见重构技巧 - 去除不必要的!=
  • 自动化安装系统问题记录
  • centos7 docker安装记录
  • 全网实时热点热榜事件API
  • 淘宝API接口:提高电商运营效率与用户体验的利器(淘宝API接口使用指南)
  • 智己 LS6 用实力和你卷,最强 800v ?