Python TypeError:需要一个类似字节的对象,而不是“str”。

3
我正在使用下面的脚本向Google发出请求。但是,当我执行它时,我收到一个错误提示: client.send("GET / HTTP/1.1\r\nHost: google.com\r\n\r\n") TypeError: a bytes-like object is required, not 'str' 在stackoverflow上查找类似问题时,建议使用client.sendto并对消息进行编码。然而,在我的情况下,没有传递任何消息。
以下是我使用的脚本:
import socket
target_host = "www.google.com"
target_port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect((target_host,target_port))
client.send("GET / HTTP/1.1\r\nHost: google.com\r\n\r\n")
response = client.recv(4096)
print(response)

希望能够给出纠正此问题的任何建议,将不胜感激。


你说的“没有消息”是什么意思?你显然正在发送一个HTTP请求。 - Pedro Castilho
1
在Python 3中,""GET / HTTP/1.1\r\nHost: google.com\r\n\r\n"是一个Unicode字符串,而.send()需要字节以便通过网络发送。你的代码试图直接发送Unicode字符串而没有进行编码,这就是错误信息所抱怨的原因。 - dhke
1个回答

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接