boost http响应读取

简介: 响应报样例:HTTP/1.1 201 CreatedContent-Type: application/jsonX-Etcd-Cluster-Id: cdf818194e3a8c32X-Etcd-Index: 11...

响应报样例:

HTTP/1.1 201 Created

Content-Type: application/json

X-Etcd-Cluster-Id: cdf818194e3a8c32

X-Etcd-Index: 115

X-Raft-Index: 1146

X-Raft-Term: 3

Date: Tue, 17 Apr 2018 07:36:20 GMT

Content-Length: 171

 

{"action":"set","node":{"key":"/test/node/node_using","value":"10.20.6.99","expiration":"2018-04-17T07:36:30.763332719Z","ttl":10,"modifiedIndex":115,"createdIndex":115}}

 

部分代码:

http::response<http::string_body> res;

http::read(socket, buffer, res);

cout << "Result:" << res.result() << "." << res.result_int() << endl; 

cout << "Contentlen:" << res.body().size() << endl; 

cout << "has len:" << res.has_content_length() << endl; 

cout << "body:" << res.body() << endl;

输出:

Result:Created.201

Contentlen:171

has len:1

 

一开始用dynamic_body,被坑的好惨,dynamic_body还不清楚原理,想通过res.body()获取包体死活不行,改为string_body直接搞定

 

研究了半天大概了解了下boost/beast/http/message.hpp里这样定义:

深入看下去,meaage继承自:

从上面的红色测试代码可看出,可以直接获取包头的一些信息,但是如果是dynamic_body的话不能用直接通过body()获取,还没研究出用法,知道其涉及到const_buffers_type、multi_buffer等相关类

 

赶项目,先不研究,有空了再研究

目录
相关文章
|
6月前
Servlet 教程 之 Servlet 服务器 HTTP 响应 2
Servlet教程讲解了如何通过HttpServletResponse设置HTTP响应,包括编码URL、添加cookie、设置报头、控制缓冲区、发送错误或重定向响应。方法如encodeURL、addCookie、sendError、sendRedirect等,涉及状态码、报头、字符编码和内容长度的管理。
59 2
|
6月前
|
XML Java 数据格式
Servlet 教程 之 Servlet 服务器 HTTP 响应 3
`Servlet`教程示例展示了如何创建一个HTTP响应,使用`@WebServlet(&quot;/Refresh&quot;)`的`Refresh`类继承`HttpServlet`。在`doGet`方法中,设置了`Refresh`头以每5秒自动刷新,并用`setContentType(&quot;text/html;charset=UTF-8&quot;)`设定内容类型。还使用`Calendar`和`SimpleDateFormat`获取并格式化当前时间显示。相应的`web.xml`配置指定了Servlet路径。当访问此Servlet时,页面将每5秒更新一次显示的系统时间。
56 4
|
1月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
90 1
|
2月前
|
Shell
HTTP状态码解析:在Haskell中判断响应成功与否
HTTP状态码解析:在Haskell中判断响应成功与否
|
1月前
|
存储 JSON API
HTTP 请求与响应处理:C#中的实践
【10月更文挑战第4天】在现代Web开发中,HTTP协议至关重要,无论构建Web应用还是API开发,都需要熟练掌握HTTP请求与响应处理。本文从C#角度出发,介绍HTTP基础知识,包括请求与响应结构,并通过`HttpClient`库演示如何发送GET请求及处理响应,同时分析常见错误并提供解决方案,助你更高效地完成HTTP相关任务。
83 2
|
2月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
149 8
|
6月前
状态码对于理解HTTP请求和响应的流程,以及调试网络问题非常重要
【5月更文挑战第15天】HTTP状态码由三位数字表示,分为1xx-5xx五类。1xx为信息响应,2xx表示成功,如200(请求成功)、201(创建成功)。3xx是重定向,如301(永久移动)、302(临时重定向)。4xx表示客户端错误,如400(坏请求)、404(未找到)。5xx是服务器错误,包括500(内部服务器错误)和503(服务不可用)。这些状态码用于理解请求响应流程和调试网络问题。
74 1
|
2月前
|
开发者
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
HTTP状态码是由网页服务器返回的三位数字响应代码,用于表示请求的处理结果和状态
31 1
|
3月前
|
数据采集 存储 监控
Haskell爬虫中日志记录:监控HTTP请求与响应
Haskell爬虫中日志记录:监控HTTP请求与响应
|
3月前
|
网络协议 安全
常见的HTTP响应状态码有哪些?
常见的HTTP响应状态码有哪些?
75 0

热门文章

最新文章