Sion 450行的c++ HttpClient

2023-05-16

Sion

  • Sion是一个轻量级的c++ http客户端,仅单头文件450行,自带std::string的扩展
  • Sion is a lightweight C + + HTTP Client, with only one header file 450 lines, with its own std::string extension.
  • Sion由Myhttp(暂未取名)删除服务器相关部分代码而来,仅能作为HttpClient使用。仅支持http协议,本来是打算加入https的,发现加入后根本不能单头文件就实现支持http,https的client。https,ws还是放在体积大点的myHttp吧。

例子

#include<iostream>
#include"Sion.h"

MyString PostTest()
{
	Sion::Request request;
	request.Header["Content-Type"] = "application/json; charset=utf-8";
	request.RequestBody = R"({"id":null,"password":"zanllp_pw","account":"zanllp"})";
	Sion::Response response = request.SendRequest(Sion::Post, "http://127.0.0.1:5000/api/auth");
	response.ParseFromSource();
	return response.ResponseBody;
}

MyString ChunkedTest()
{
	Sion::Response response = Sion::Request::StaticRequest(Sion::Get, "http://zanllp.cn");
	response.ParseFromSource(true);
	return response.ResponseBody;
}

void ShowHeader()
{
	Sion::Request request;
	Sion::Response response=request.SendRequest(Sion::Get, "http://www.baidu.com");
	response.ParseFromSource(true);
	for (auto x : response.Header)
	{
		std::cout << x.first << "   " << x.second << std::endl;
	}
}

int main()
{
	try
	{
		ShowHeader();
		std::cout << ChunkedTest() <<std::endl;
		std::cout << PostTest() << std::endl;
	}
	catch (const std::exception &e)
	{
		std::cout << e.what() << std::endl;
	}
	system("pause");
}

MyString

该类继承std::string,用法基本一致,拓展了几个函数


//使用字符串分割
//flag 分割标志,返回的字符串向量会剔除,flag不要用char,会重载不明确
//num 分割次数,默认0即分割到结束,例num=1,返回开头到flag,flag到结束size=2的字符串向量
//skipEmpty 跳过空字符串,即不压入length==0的字符串
std::vector<MyString> Split(MyString flag, int num = 0, bool skipEmpty = true)

//清除前后的字符
//target 需要清除的字符默认空格
MyString Trim(char target = ' ')

//包含字母
bool HasLetter()

//转换到gbk 中文显示乱码调用这个
MyString ToGbk()

//返回搜索到的所有位置
//flag 定位标志
//num 搜索数量,默认直到结束
std::vector<int> FindAll(MyString flag, int num = -1)

//字符串替换
MyString& Replace(MyString oldStr, MyString newStr)

Response

该类用来处理请求响应

//解析服务器发送过来的响应 获得响应源后需手动调用一次
MyString ParseFromSource(bool ConverToGbk = false)

Request

该类用来处理发送请求

//设置请求方法 
void SetHttpMethod(MethodEnum method, MyString other = "")

//发送请求
MyString SendRequest(MyString url)
MyString SendRequest(MethodEnum method, MyString url)
MyString static StaticRequest(MethodEnum method, MyString url)

GitHub

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Sion 450行的c++ HttpClient 的相关文章

随机推荐

  • YOLO之trt推理+Diou/iou目标跟踪以及计数【附代码】

    本篇文章是对之前YOLOv4 tensorrt推理项目的更新 xff0c 在trt推理 xff0c 多进程语音报警的功能中又新添加了目标跟踪 可用于目标计数 采用IOU进行跟踪 也可以选用DIOU yolov4 43 deepsort可以参
  • yolov5_reid【附代码,行人重识别,可做跨视频人员检测】

    该项目利用yolov5 43 reid实现的行人重识别功能 xff0c 可做跨视频人员检测 应用场景 xff1a 可根据行人的穿着 体貌等特征在视频中进行检索 xff0c 可以把这个人在各个不同摄像头出现时检测出来 可应用于犯罪嫌疑人检索
  • src目录和项目路径的联系

    code src目录里面的东西会被eclipse编译 xff0c 编译完了就放到了 bin目录下 xff0c 而bin目录就是我们项目的classPath code
  • 逆向加固分析

    34 libsecexe so 34 34 梆梆加固免费版 34 34 libsecmain so 34 34 梆梆加固免费版 34 34 libSecShell so 34 34 梆梆加固免费版 34 34 secData0 jar 34
  • android之visibility的三个属性

    android visibility 61 34 34 其有三个属性 xff1a visible显示 xff1b invisible显示黑背景条 xff0c 在这种情况下它会占据空间 xff1b gone不显示 在类中 xff0c 可以设置
  • android中的Application类

    在2011年做的一个iptv项目中就接触了这个Application类 xff0c 虽用起来简单 xff0c 但还是有些需要注意的地方 空闲之余 xff0c 总结如下 xff1a android 系统为每个程序运行时创建一个Applicat
  • android混淆

    首先要说的话 xff1a 本文是对好几个博文的摘录再加上我自己的理解 xff0c 以尊重原创为原则 xff0c 下面贴出相关博文的链接 Android有效地减少方法数 http blog csdn net lihenair article
  • ROS通信

    1 话题通信 话题通信是ROS中使用频率最高的一种通信模式 xff0c 话题通信是基于发布订阅模式的 xff0c 也即 一个节点发布消息 xff0c 另一个节点订阅该消息 用于不断更新的 少逻辑处理的数据传输场景 ROS Master 管理
  • 解决C&C++头文件互相包含问题

    案例说明 xff1a test1中需要调用test2中的go test2 xff0c test2中需要调用test1中的go test1 main cpp span class token macro property span class
  • C++类库开发详解

    前言 xff1a 这是一篇总结性的文章 xff0c 需要有一点C 43 43 和dll基本知识的基础 xff0c 在网上查阅了很多资料感觉没有一篇详细 具体 全面的dll开发介绍 xff0c 我这是根据最近项目和网上资料整理出来的 xff0
  • ROS下建立工作空间以及编译一个包

    在ROS层面上编写软件 xff0c 需要有相关的工作空间 xff08 workspace xff09 生成工作控件并不复杂 xff0c 首先 xff0c 我们打开一个控制台 xff08 Ctrl 43 Alt 43 T xff09 xff0
  • python socket小结

    Python socket 简单编程小结 首先创建服务器端的socket socket server import socket 定义变量 HOST 61 34 localhost 34 PORT 61 是数字类型 xff0c 不是字符串类
  • STM32 IO口模拟I2C+驱动MPU6050

    一年前写的博客 xff0c 没有把驱动代码分享出来是我疏忽了 xff0c 可以到网盘下载驱动代码 链接 xff1a https pan baidu com s 1SDVQfyoOoycCY 6eSXamlQ 密码 xff1a ipj7 之后
  • git常用操作(branch tag)

    git日常总结 1 初次在本地下载分支代码操作2 初次下载远程代码3 创建分支3 1 创建本地分支3 2创建远程分支 4 删除分支4 1 删除本地分支4 2删除远程分支 5 删除文件5 1 删除本地文件5 2 删除远程文件 6 删除提交6
  • openwrt出现md5sum mismatch错误

    原文地址 xff1a http catinmay com openwrt E5 87 BA E7 8E B0md5sum mismatch E9 94 99 E8 AF AF 刚刚帮人搞路由器一运行安装命令就会出现此错误 xff0c 错误提
  • python——系统交互subprocess

    目录 一 os与commands模块 1 os system 函数实例 2 os popen 函数实例 3 commands getstatusoutput 函数实例 二 subprocess模块 1 subprocess模块中的常用函数
  • strcat 你真的懂吗?

    http blog chinaunix net uid 26914516 id 4215338 html 声明 xff1a 使用GCC编译 strcat xff08 连接两字符串 xff09 函数定义 xff1a char strcat c
  • HTTP超全详解

    HTTP协议简介 超文本传输协议 xff08 英文 xff1a HyperText Transfer Protocol xff0c 缩写 xff1a HTTP xff09 是一种用于分布式 协作式和超媒体信息系统的应用层协议 HTTP是一个
  • 【Linux】三次握手和四次挥手详解

    三次握手和四次挥手 TCP 协议提供的是 xff1a 面向连接 可靠的 字节流服务 使用 TCP 协议通信的双发必须先建立连接 xff0c 然后才能开始数据的读写 双方都必须为该连接分配必要的内核资源 xff0c 以管理连接的状态和连接上数
  • Sion 450行的c++ HttpClient

    Sion Sion是一个轻量级的c 43 43 http客户端 xff0c 仅单头文件450行 xff0c 自带std string的扩展Sion is a lightweight C 43 43 HTTP Client with only