c++ http服务器客户端程序-传输json解析json数据(2)

2023-05-16

1、服务器端的实例:

#include "stdafx.h"

#include <iostream>

#include <chrono>
#include <cstdio>
#include "httplib.h"

using namespace httplib;


#include "rapidjson.h"
#include "prettywriter.h" // for stringify JSON
#include "document.h"
using namespace std;

string ArrayToJson()
{
    using namespace rapidjson;
    StringBuffer sb;
    PrettyWriter<StringBuffer> writer(sb);

    writer.StartArray();

    writer.StartObject();
    writer.Key("name");
    writer.String("xiaoming");
    writer.EndObject();

    writer.StartObject();
    writer.Key("name");
    writer.String("xiaohua");
    writer.EndObject();

    writer.EndArray();

    return sb.GetString();
}

int main()
{
    string strJson = ArrayToJson();
    ParseArray(strJson);

    Server svr;
    if (!svr.is_valid())
    {
        printf("server has an error...\n");
        return -1;
    }

    svr.Get("/hi", [&](const Request& /*req*/, Response& res)
    {
        res.set_content(strJson, "text/plain");
    });

    svr.Get("/stop",
        [&](const Request& /*req*/, Response& /*res*/) { svr.stop(); });

    svr.listen("localhost", 1234);
    int yy = 55;

}

生成的json的数据如下:

[
    {
        "name": "xiaoming"
    },
    {
        "name": "xiaohua"
    }
]

2、客户端连接服务器端实例如下:

#include "stdafx.h"

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

using namespace std;

#include "rapidjson.h"
#include "prettywriter.h" // for stringify JSON
#include "document.h"
using namespace std;

void ParseArray(string strJson)
{
    //创建解析对象
    rapidjson::Document doc;
    //首先进行解析,没有解析错误才能进行具体字段的解析
    if (!doc.Parse(strJson.data()).HasParseError())
    {
        const rapidjson::Value& docArray = doc.GetArray();
        for (int i = 0; i < docArray.Size(); ++i)
        {
            string strValue = docArray[i]["name"].GetString();
        }
    }
}

int main()
{
    httplib::Client cli("localhost", 1234);
    if (auto res = cli.Get("/hi"))
    {
        cout << res->status << endl;
        cout << res->get_header_value("Content-Type") << endl;
        cout << res->body << endl;

        //解析当前的json
        ParseArray(res->body);
    }
    else
    {
        
    }
    system("pause");
}

至此,一个简单的http服务器端客户端通信传输json数据实例就完成了

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

c++ http服务器客户端程序-传输json解析json数据(2) 的相关文章

随机推荐

  • stm32 类型转换

    stm32怎么把uint8 t类型转换成int类型 可以使用强制类型转换 xff1a int n 61 int uint8 t 参考例子 xff1a include lt stdio h gt int main void uint8 t a
  • C语言不带头结点链表创建,删除,插入总结

    一 创建链表 1 第一种创建链表的方法 xff0c 注意对比和第二种创建链表的细微之处 xff0c typedef struct mynode int num float score struct mynode next Node Pnod
  • http协议基本认证 Authorization

    http协议是无状态的 xff0c 浏览器和web服务器之间可以通过cookie来身份识别 桌面应用程序 比如新浪桌面客户端 xff0c skydrive客户端 跟Web服务器之间是如何身份识别呢 xff1f 阅读目录 什么是HTTP基本认
  • Java 中大小端 int 与 byte 数组转换

    1 小端模式转换 1 1 int 转 byte 数组 xff0c 低位在前 xff0c 高位在后 将int数值转换为占四个字节的byte数组 xff0c 本方法适用于 低位在前 xff0c 高位在后 的顺序 和bytesToInt xff0
  • 无人机/FPV穿越机航模的遥控器/接收机等配件厂商

    本人最近迷恋上了穿越机 整理一些资料 xff0c 方便后来人学习 有其他更新资料 xff0c 欢迎留言 xff0c 争取打造成好的工具书 新手入门可以看百科 xff1a http wiki fpvbang com 穿越机电子系统表 xff1
  • FPV穿越机一启动就加速翻滚(死亡翻滚)解决办法

    最近不是开始入坑穿越机吗 xff0c 买了一个moblite7玩玩 xff0c 碰到了这个问题 大家在购买其他穿越机 xff0c 或者自组穿越机 xff0c 还有重置了穿越机的设置好 也很有可能碰到问题 xff0c 我把自己搜索并解决这个问
  • Python读取Microsoft Access Database

    公司有一个小零件进出库管理系统 xff0c 数据库是使用Microsoft Access Database xff0c 因长期存储会有生锈问题 xff0c 导致零件报废 因此基于原数据的进库出库在库数据 xff0c 做一个python脚本
  • Android13 新特性和开发适配须知

    前言 目前 Google 已经发布了 Android 13 的正式版 xff0c 虽然国内的手机能用上 Android 13 还有一段时间 xff0c 不过开发者们可以通过模拟器来体验 xff0c 那么我们来看看 Android 13 都有
  • ./configure 的配置和用法

    Linux环境下的软件安装 xff0c 并不是一件容易的事情 xff1b 如果通过源代码编译后在安装 xff0c 当然事情就更为复杂一些 xff1b 现在安装各种软件的教程都非常普遍 xff1b 但万变不离其中 xff0c 对基础知识的扎实
  • JDK1.8(jdk8.0)新特性

    Java is still not dead and people are starting to figure that out 本教程将用带注释的简单代码来描述新特性 xff0c 你将看不到大片吓人的文字 一 接口的默认方法 Java
  • MQTT协议通俗讲解

    参考 Reference 协议文档 Offical Docs v3 1 1 英文原版 中文翻译版 其他资源 网站 MQTT官方主页 Eclipse Paho 项目主页 测试工具 MQTT Spy xff08 基于JDK xff09 Chro
  • mqtt实现库对比

    发现一片非常好的文章 xff0c 从17个方面 xff0c 介绍几个分布式消息队列系统 xff0c 非常棒的内容 xff0c 方便做技术选型 xff0c 平衡各种 xff1a 17 个方面 xff0c 综合对比 Kafka RabbitMQ
  • 几种直播流媒体协议

    题外话 xff1a HTTP渐进下载流媒体播放 基于TCP yy 乐视 爱奇艺 优酷土豆 搜狐视频 花椒直播 xff0c 主要还是通过rtmp amp hls来实现的 xff0c 但他们也意识到rtmp的天生缺陷 xff0c 所以不管是技术
  • Android9.0(androidP)系统API和行为变化

    这篇文章 xff0c 是Android官方文档的中文版本 注意事项 xff08 AndroidP 特性 xff09 xff1a 1 android os Build VERSION RELEASE xff0c 需要当做字符串类型处理 2 依
  • Android version名称,版本号,API level,代号 表(updateing)

    系统版本OS Version 版本号API level 发布日期release Date 发布代号nick Name 主要特性feature android1 0 API1 2008 10 android1 1 API2 2009 2 an
  • Android10.0(Q)新特性和行为变更

    Android Q 还为开发者们带去了许多新功能 xff0c 如折叠屏增强项 新网络连接 API 全新的媒体解码器 摄像头新功能 NNAPI 扩展 Vulkan 1 1 图形支持等等 2019 4 Beta2版本发布 点击查看Google官
  • JNI 使用案例详解(一)

    很久没有写博客了 xff0c 今天来写一下关于在android开发过程中使用JNI的详细案例及操作步骤 首先 xff0c JNI xff0c 我的理解 xff0c 他就是java和C之间的桥梁 xff0c 很多写C 43 43 和JAVA的
  • Echarts添加鼠标点击事件

    1 通常我们只使用了以下代码 xff0c 通过配置项和数据显示图表 var myChart 61 echarts init document getElementById 39 tree chart 39 myChart setOption
  • linux下进程的进程最大数、最大线程数、进程打开的文件数和ulimit命令修改硬件资源限制

    ulimit命令查看和更改系统限制 ulimit命令详解 ulimit用于shell启动进程所占用的资源 xff0c 可以用来设置系统的限制 语法格式 ulimit acdfHlmnpsStvw size 在 etc security li
  • c++ http服务器客户端程序-传输json解析json数据(2)

    1 服务器端的实例 xff1a include 34 stdafx h 34 include lt iostream gt include lt chrono gt include lt cstdio gt include 34 httpl