为了实现一个收到HTTPS响应的接口,我的实现思路是这样的:
分三步对响应进行接收,第一步先接收response_line, 第二步接收response_header , 最后一步对reponse_body进行接收。
在代码上,因为前两步都有明显的结束标识符,response line使用"\r\n"作为结束标识库,response header使用"\r\n\r\n"作为结束标识库,这些都是HTTP标准规定的,所以不会有问题,而response body使用一个计时器,当接收超时100ms后,表示当前body已经接收完成。
代码逻辑如下:
读取response line:
asio
::
async_read_until
(
socket_
,
response_
,
MatchResponseLine
,
bind
(&
HttpsWebClient
::
OnReadResponseLineHandler
,
this
,
web_response
,
response_handler
,