jsoncpp库的使用及用httplib库搭建HTTP服务器

2023-05-16

一、 

vi json_test.cpp 

#include<iostream>
  2 #include<string>
  3 #include<jsoncpp/json/json.h>
  4 using namespace std;
  5
  6 void Seralize()
  7 {
  8   const char*name="张三";
  9   int age=18;
 10   float score[]={88.5,99,45};
 11
 12   Json::Value val;
 13   val["姓名"]=name;
 14   val["年龄"]=age;
 15   val["成绩"].append(score[0]);
 16   val["成绩"].append(score[1]);
 17   val["成绩"].append(score[2]);
 18
 19   Json::Value root;
 20   root.append(val);
 21
 22   Json::FastWriter writer;
 23   string str=writer.write(root);
 24   cout<<str<<endl;
 25
 26 }
 27
 28
 29 void UnSeralize()
 30 {
 31   string str=R"({"姓名":"李四","年龄":19,"成绩":[66,87.5,99]})";
 32   cout<<str<<endl;
 33   Json::Reader reader;
 34   Json::Value val;
 35   bool ret= reader.parse(str,val);
 36   if(ret==false)
 37   {
 38    cout<<"json parse error\n";
 39    return;
 40   }
 41
 42  cout<<val["姓名"].asString()<<endl;
 43  cout<<val["年龄"].asInt()<<endl;
 44  if(val["成绩"].isArray())
 45  {
 46   int sz=val["成绩"].size();
 47   for(int i=0;i<sz;i++)
 48   {
 49     cout<<val["成绩"][i].asFloat()<<endl;
 50   }
 51  }
 52 return;
 53 }
 54
 55
 56
 57 int main()
 58 {
 59
 60   Seralize();
 61   UnSeralize();
 62   return 0;
 63
 64 }

vi makefile

 http_sever:http_sever.cpp
     g++ -g -std=c++11 $^ -o $@ -lpthread
  
 json_test:json_test.cpp
     g++ -std=c++11 $^ -o $@ -ljsoncpp

 结果如下:

 二、

vi http_sever.cpp


  1 #include "httplib.h"
  2 using namespace std;
  3 void HelloWord(const httplib::Request &req,httplib::Response &rsp)
  4 {
  5   rsp.body="hello bit!!!123456";
  6   rsp.status=200;
  7   return;
  8 }
  9
 10 void Numbers(const httplib::Request &req,httplib::Response &rsp)
 11 {
 12   string num=req.matches[1];
 13   rsp.body=num;
 14   rsp.status=200;
 15 }
 16
 17 void Dish(const httplib::Request &req,httplib::Response &rsp)
 18 {
 19   rsp.body=req.body;
 20   rsp.status=200;
 21 }
 22
 23 int main()
 24 {
 25   httplib::Server srv;
 26  srv.set_mount_point("/","./wwwroot");
 27
 28  srv.Get("/hi",HelloWord);
 29  srv.Get(R"(numbers/(d+))",Numbers);
 30  srv.Post("/dish",Dish);
 31  srv.listen("0.0.0.0",19000);
 32  return 0;
 33 }

index.html

  1 <html>
  2   <head>
  3       <meta charset="UTF-8"/>
  4   </head>
  5   <body>
  6       <h1>语文数学英语</h1>
  7   </body>
  8 </html>

 目录结构:

浏览器输入192.168.164.137:19000/hi,页面显示hello bit!!!123456,如下图所示: 

 浏览器输入192.168.164.137:19000/numbers,页面显示123456,如下图所示:

 浏览器输入192.168.164.137:19000/index.html,页面显示语文数学英语,如下图所示:

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

jsoncpp库的使用及用httplib库搭建HTTP服务器 的相关文章

  • Keil调试局部变量显示“not in scope“的问题解决

    Keil调试局部变量显示 34 not in scope 34 的问题解决 参考文章 xff1a xff08 1 xff09 Keil调试局部变量显示 34 not in scope 34 的问题解决 xff08 2 xff09 https
  • MPU6050可以读取ID值,温度值和原始数据值为零问题解决

    MPU6050可以读取ID值 xff0c 温度值和原始数据值为零问题解决 参考文章 xff1a xff08 1 xff09 MPU6050可以读取ID值 xff0c 温度值和原始数据值为零问题解决 xff08 2 xff09 https w
  • 英伟达Jetson Xavier NX部署YOLO5

    1 查看JetPack版本 新到手的NX首先需要确定一下JetPack的版本 xff1a sudo apt span class token operator span cache show nvidia span class token
  • 史上最全 | BEV感知算法综述(基于图像/Lidar/多模态数据的3D检测与分割任务)...

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心技术交流群 后台回复 BEV综述 获取论文 xff01 后台回复 ECCV2022 获取ECCV2022所有自动驾驶方向论文
  • matlab-字符串的处理操作

    建立一个字符串向量 xff0c 然后对该向量做如下处理 xff1a 取第1 5个字符组成的子字符串 将字符串倒过来重新排列 将字符串中的小写字母变成相应的大写字母 xff0c 其余字符不变 统计字符串中小写字母的个数 代码 ch 61 39
  • curl发送带有Authorization的POST请求

    一 参数说明 格式 xff1a curl H 请求头 d 请求体 X POST 接口地址 参数内容格式 H header 请求头 Content Type application json d请求内容 remote host 10 163
  • AStar寻路算法 (C#)

    一 介绍 A星算法其实并不是最短路径算法 xff0c 它找到的路径并不是最短的 xff0c 它的目标首先是能以最快的速度找到通往目的地的路 B星实际上是A星的优化 但是B星的缺点是不能向后查找 所以会有问题 还有一种D星的可以用来找最短路径
  • 深度相机介绍(TOF、RGB双目、结构光参数对比)

    一 深度相机的介绍 随着计算机视觉与人工智能技术的飞速发展 xff0c 采用深度相机进行场景三维重建 目标检测 环境感知等应用越来越广泛 xff0c 与传统的2D相机不同 xff0c 深度相机可以通过拍摄空间来获得景深信息 xff0c 从而
  • 网络编程——UDP

    目录 UDP的服务器端 UDP的echo客户端代码 UDP的echo服务器端代码 UDP的服务器端 先运行服务器端 xff0c 再运行客户端 服务端 xff1a 开发者 xff1a Virtuous 开发版本 xff1a 1 0 开发时间
  • HTTP 完全解析

    Http 详解 HTTP 的定义 HTTP即是 xff1a Hypertext Transfer Protocol xff0c 超文本传输协议 xff0c 种 络传输协议 xff0c 位于 TCP IP 协议族的最顶层 应 层 URL 说到
  • STM32 自定义串口协议

    STM32 自定义串口协议 1 串行通信1 1 原理与优缺点1 2 分类1 2 1 按通信方向1 2 2 按通信方式 1 3 异步串行引脚连接1 3 1 串口外设之间1 3 2 ARM与PC之间 1 4 字符帧格式1 5 串口通信过程1 6
  • 无人机——电机篇(一)

    文章目录 1 电机的定义 2 电机的分类 3 电机的参数 4 电机效率 5 电机的选择 1 电机的定义 电机俗称 马达 是无人机的动力来源 无人机通过改变电机的转速来改变无人机的飞行状态 即改变每个电机的速度 使得无人机能够盘旋空中 上升或
  • HTTP请求/响应报文结构

    HTTP请求报文 一个HTTP请求报文由四个部分组成 xff1a 请求行 请求头部 空行 请求数据 1 请求行 请求行由 请求方法字段 URL字段 和 HTTP协议版本字段 3个字段组成 xff0c 它们用空格分隔 比如 GET data
  • AStar寻路算法

    概述 AStar算法是一种图形搜索算法 xff0c 常用于寻路 他是以广度优先搜索为基础 xff0c 集Dijkstra算法和最佳优先 best fit 于一身的一种算法 示例1 4向 示例2 8向 思路 递归的通过估值函数找到最佳路径 x
  • ECCV2022 | 多模态融合检测新范式!基于概率集成实现多模态目标检测

    点击下方卡片 xff0c 关注 自动驾驶之心 公众号 ADAS巨卷干货 xff0c 即可获取 点击进入 自动驾驶之心技术交流群 后台回复 ECCV2022 获取ECCV2022所有自动驾驶方向论文 xff01 说在前面的话 标题 xff1a
  • 什么是地址映射

    ARM体系结构 地址映射 一 什么是地址映射 1 ARM Cortex A8架构 xff0c 32位CPU xff0c CPU设计时就有32根地址线和32根数据线 2 32根地址线决定了CPU的地址空间为4G xff0c 那么这4G空间如何
  • 寄存器和GPIO

    一 什么是GPIO 1 GPIO的英文全称General Purpose Input Output Ports 中文意思是通用I O端口 2 GPIO就是芯片的引脚 xff08 芯片上的引脚有些不是GPIO xff0c 只有一部分是 xff
  • 什么是I2C通信

    ARM体系 I2C通信 一 什么是I2C 1 I2C总线是由Philips公司开发的一种简单 双向二线制同步串行总线 它只需要两根线即可在连接于总线上的设备之间传送信息 2 主设备用于启动总线传送数据 xff0c 并产生时钟以开放传送的设备
  • 什么是AD转换

    ARM体系 ADC 一 什么是ADC 1 ADC xff1a analog digital converter xff0c AD转换 xff0c 模数转换 xff08 也就是模拟转数字 xff09 2 模拟信号只有通过A D转化为数字信号后
  • 什么是SPI通信

    ARM体系 SPI通信 一 什么是SPI通信 1 SPI是串行外设接口 Serial Peripheral Interface xff0c 可以理解为一种通信协议 xff0c 也就是用来传输数据的 2 SPI 是由摩托罗拉 Motorola

随机推荐