连接到服务器后,我需要使用GET
命令从中获取所有信息。出于某种原因,我不允许在我的get命令之后放置\r\n
,因此我发送到服务器的命令类似GET http://somethingrandom.com HTTP/1.0
。
将请求发送到地址后,我收不到与终端的正常GET
相同的输出:
更具体地说,我收到以下信息:
我认为\r\n
的作用是完全忽略这些信息。 (在此示例中,额外的<head>
标记信息)。如果它与我的代码有关(最有可能),我会在之后提供它。
答案 0 :(得分:1)
您在终端上使用的第一个命令实际上是程序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
分隔。因此,您需要从标题中获取信息以正确解释正文。在最简单的情况下,您可以删除标题。