使用HTTP时出现Python套接字错误

使用HTTP时出现Python套接字错误,python,http,Python,Http,我正在尝试编写一个简单的代码,如下图所示 我得到下面的错误 您能告诉我为什么会出现错误以及如何纠正错误吗?您的HTTP请求在以下几个方面有错误: 这些应该是\r\n,而不是/n/n\r和\n是回车符和换行符的转义序列,因此您可以将它们写成字符串文字 GET http://www.py4inf.com/code/romeo.txt HTTP/1.0/n/n ^^^^ 发送GEThttp://w

我正在尝试编写一个简单的代码,如下图所示

我得到下面的错误


您能告诉我为什么会出现错误以及如何纠正错误吗?

您的HTTP请求在以下几个方面有错误:

  • 这些应该是
    \r\n
    ,而不是
    /n/n
    \r
    \n
    是回车符和换行符的转义序列,因此您可以将它们写成字符串文字

    GET http://www.py4inf.com/code/romeo.txt HTTP/1.0/n/n
                                                     ^^^^
    
  • 发送
    GEThttp://www.py4inf.com/code/romeo.txt
    类似于在浏览器中打开以下链接:

    http://www.py4inf.com/http://www.py4inf.com/code/romeo.txt
    
    您想改为发送
    GET/code/romeo.txt

  • 您缺少
    Host
    头,因此Web服务器很可能不会响应,因为一台服务器可能承载多个网站

  • 您需要使用
    \r\n
    终止HTTP请求

  • 正确的请求如下所示:

    mysock.send('GET /code/romeo.txt HTTP/1.0\r\n')
    mysock.send('Host: www.py4inf.com\r\n')
    mysock.send('\r\n')
    

    请将代码作为格式正确的文本发布。此外,此请求确实无效,请阅读规范。顺便说一句,这不是一个套接字错误,而是一个HTTP错误,因此标题有误导性。感谢您的帮助…以上更改使其正常工作。但是我有一个问题,我已经将我的套接字连接到“www.py4inf.com”,然后我需要再次提供主机名?@akashrai:
    www.py4inf.com
    解析为
    74.208.236.248
    。该IP地址的Web服务器可以承载数百个网站,因此仅连接到服务器并发送
    GET/
    是不明确的,因为您从未指定要向哪个网站发送请求。