Python http get返回以\r\n\r\n not结尾的行\r\n

Python http get返回以\r\n\r\n not结尾的行\r\n,python,http,Python,Http,在s.send(xxx)中,在关闭后有两个\r\n\r\n,它可以工作,但是如果我只写一个\r\n,那么我什么也得不到。 为什么会发生这种情况?因为这是HTTP协议的要求;您可以使用双CRLF对关闭标题。即使没有请求正文,这也适用。来自维基百科: 报头部分的末端由空场线表示,导致两个连续CR-LF对的传输 快速浏览一下wikipedia页面应该可以消除混淆。嘿,怎么样:导入请求;print(requests.get('sina.com.cn').text)谢谢,我刚刚学习了python,并尝试使

s.send(xxx)
中,在
关闭后有两个
\r\n\r\n
,它可以工作,但是如果我只写一个
\r\n
,那么我什么也得不到。
为什么会发生这种情况?

因为这是HTTP协议的要求;您可以使用双CRLF对关闭标题。即使没有请求正文,这也适用。

来自维基百科:

报头部分的末端由空场线表示,导致两个连续CR-LF对的传输


快速浏览一下wikipedia页面应该可以消除混淆。

嘿,怎么样:导入请求;print(requests.get('sina.com.cn').text)谢谢,我刚刚学习了python,并尝试使用socketI来理解,尽管它让事情变得更加困难。特别是如果您不了解HTTP的详细信息。这将是3行代码重新使用车轮。
import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('www.sina.com.cn', 80))
s.send(b'GET / HTTP/1.1\r\nHost: www.sina.com.cn\r\nConnection: close\r\n\r\n')
buffer = []
while True:
    d = s.recv(1024)
    if d:
        buffer.append(d)
    else:
        break
data = b''.join(buffer)
s.close()
with open('d:/sina.html', 'wb') as f:
    f.write(data)
print('done!')enter code here