http请求没有收到全部信息 – C.
连接到服务器后,我需要使用GET
命令从中获取所有信息。 由于某种原因,我不允许在我的get命令之后输入\r\n
,因此我发送到服务器的命令类似于GET http://somethingrandom.com HTTP/1.0
。
在将请求发送到地址后,我没有收到与终端正常GET
相同的输出:
更具体地说,我收到以下信息:
- http状态
- 一些奇怪的数据:
- 日期
- 服务器
- 最后修改
- ETag的
- 接受-范围
- 内容长度
- 变化
- 连接
- 内容类型
我认为\r\n
的作用是完全忽略这些信息。 (在此示例中,额外的标记信息)。 如果它与我的代码有关(最有可能),我会在之后提供它。
您在终端上使用的第一个命令实际上是程序GET
,它使用Perl LWP库执行正确的HTTP请求,并为您提供响应。 您给出的命令末尾的HTTP/1.0
实际上被忽略,因为只需要URL。 因此GET
类似于curl
或wget
。 你甚至可以打电话给GET --help
来确切使用。
你在C中尝试做的事情就是在没有任何库的情况下处理HTTP。 在这种情况下,您必须正确读取和解析响应,即,如果您使用这些命令, GET
, curl
或wget
命令的确切为您做的事情。 要正确执行此操作,您需要首先了解HTTP协议。 虽然HTTP / 1.0不是最新的标准,但我建议首先研究它,因为它是最简单的,它仍然被Web服务器接受。 有关标准,请参阅RFC 1945 。
从阅读标准,您将看到,有一个HTTP响应标题和正文,由\r\n
分隔。 因此,您需要从标题中获取信息以正确解释正文。 在最简单的情况下,您可以删除标题。