【发布时间】:2016-08-08 11:46:40
【问题描述】:
我在 C 中运行一个简单的客户端代码来执行 POST 和 GET 到服务器并读取数据流。目前我正在打印在recv() 收到的完整回复,并且必须对其进行解析以供进一步使用。在读取数据流之前,我想知道来自服务器的 HTTP 状态码(200、400、401 等)是什么。我在标题中得到了相同的结果。有没有办法在阅读标头之前获取 HTTP 代码?
读取 Head 参数和 Payload 的最佳做法是什么?我进行了搜索,但得到的答案是阅读 '\r\n' 序列而不是应用逻辑。有没有更好的办法?
我正在使用 Ubuntu 系统来测试这段代码。以下是正在打印的响应:
<p style="color:blue;">HTTP/1.1 401 Unauthorized
Server: Apache-Coyote/1.1
Content-Type: application/json
Content-Length: 69
Date: Mon, 08 Aug 2016 09:46:46 GMT
</p>
<p style="color:blue;">"You are not a authorized user to access this resource. Access denied."
【问题讨论】:
-
' 有没有办法在读取 Headers 之前获取 HTTP 代码? '已经没有意义了。 HTTP 状态代码是 in 标头。不清楚您在问什么,或者当已经有许多可用的工作库时,为什么要重新实现客户端 HTTP。要实现 HTTP,您需要对 TCP、套接字和 RFC 2616 及其后续版本有很好的了解。
标签: c sockets unix-socket