gpt4 book ai didi

c - http 请求未收到完整信息 - C

转载 作者:行者123 更新时间:2023-11-30 14:57:12 26 4
gpt4 key购买 nike

连接到服务器后,我需要使用GET命令从中获取所有信息。由于某种原因,我不允许输入 \r\n在我的 get 命令之后,所以我发送到服务器的命令类似于 GET http://somethingrandom.com HTTP/1.0 .

将请求发送到该地址后,我没有收到与正常 GET 相同的输出从终端将:

GET from a terminal

更具体地说,我收到以下信息:

the following information

  • http 状态
  • 一些奇怪的数据:
    • 日期
    • 服务器
    • 最后修改时间
    • ETag
    • 接受范围
    • 内容长度
    • 变化
    • 连接
    • 内容类型

我认为\r\n的作用就是完全忽略该信息。 (在此示例中是额外的 <head> 标签信息)。如果它与我的代码有关(很可能),我会在之后提供。

最佳答案

您在终端上使用的第一个命令实际上是程序 GET,它使用 Perl LWP 库执行正确的 HTTP 请求并返回响应。您给出的命令末尾的 HTTP/1.0 实际上会被忽略,因为只需要 URL。因此,GET 类似于 curlwget。您甚至可以调用 GET --help 了解确切的用法。

您尝试在 C 中做的事情是在没有任何库的情况下处理 HTTP。在这种情况下,您必须正确读取和解析响应,即 GETcurlwget 命令为您执行的操作,如果使用这些命令。要正确执行此操作,您需要首先了解 HTTP 协议(protocol)。虽然 HTTP/1.0 不是最新的标准,但我建议首先研究它,因为它是最简单的标准,并且仍然被 Web 服务器接受。请参阅RFC 1945为标准。

通过阅读标准,您将看到,有一个 HTTP 响应 header 和正文,由 \r\n 分隔。因此,您需要从 header 中获取信息才能正确解释正文。在最简单的情况下,您可以只删除 header 。

关于c - http 请求未收到完整信息 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075552/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com