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

2024-06-03 02:08

本文主要是介绍c++ http服务器客户端程序-传输xml解析xml数据(3),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、服务器端的实例:

#include "stdafx.h"

#include <iostream>

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

using namespace httplib;

using namespace std;

#include "pugixml/pugixml.cpp"

struct xml_string_writer : pugi::xml_writer
{
    std::string result;
    virtual void write(const void* data, size_t size)
    {
        result += std::string(static_cast<const char*>(data), size);
    }
};

string WriteXML()
{
    using namespace pugi;
    pugi::xml_document doc;
    pugi::xml_node root_node = doc.append_child("Root");
    pugi::xml_node students_node = root_node.append_child("students");
    pugi::xml_node student_node = students_node.append_child("student");
    pugi::xml_node name_node = student_node.append_child("name");
    name_node.append_child(pugi::node_pcdata).set_value("2222");
    
    xml_string_writer _str;
    doc.save(_str);
    return _str.result;
}


int main()
{
    string strXML = WriteXML();

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

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

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

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

    svr.listen("localhost", 1234);

}

 2、客户端实例:
void ReadXML(string strXML)
{
    std::locale::global(std::locale("chs"));

    using namespace pugi;
    pugi::xml_document doc;
    doc.load_string(strXML.c_str());
    pugi::xml_node tools = doc.first_child();
    /*pugi::xml_node tools = doc.child("Root");*/
    for (pugi::xml_node_iterator it = tools.begin(); it != tools.end(); ++it)
    {
        const char *strnode = it->name();
        int tt = 66;
    }
}


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
        ReadXML(res->body);
    }
    else
    {
        
    }
    system("pause");
}
 

 

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

这篇关于c++ http服务器客户端程序-传输xml解析xml数据(3)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1025733

相关文章

使用C++实现链表元素的反转

《使用C++实现链表元素的反转》反转链表是链表操作中一个经典的问题,也是面试中常见的考题,本文将从思路到实现一步步地讲解如何实现链表的反转,帮助初学者理解这一操作,我们将使用C++代码演示具体实现,同... 目录问题定义思路分析代码实现带头节点的链表代码讲解其他实现方式时间和空间复杂度分析总结问题定义给定

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

部署Vue项目到服务器后404错误的原因及解决方案

《部署Vue项目到服务器后404错误的原因及解决方案》文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是... 目录一、vue项目部署步骤二、404错误原因及解决方案错误场景原因分析解决方案一、Vue项目部署步骤

C#中读取XML文件的四种常用方法

《C#中读取XML文件的四种常用方法》Xml是Internet环境中跨平台的,依赖于内容的技术,是当前处理结构化文档信息的有力工具,下面我们就来看看C#中读取XML文件的方法都有哪些吧... 目录XML简介格式C#读取XML文件方法使用XmlDocument使用XmlTextReader/XmlTextWr

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

JavaWeb-WebSocket浏览器服务器双向通信方式

《JavaWeb-WebSocket浏览器服务器双向通信方式》文章介绍了WebSocket协议的工作原理和应用场景,包括与HTTP的对比,接着,详细介绍了如何在Java中使用WebSocket,包括配... 目录一、概述二、入门2.1 POM依赖2.2 编写配置类2.3 编写WebSocket服务2.4 浏

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE