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

时间:2017-04-05 17:27:59

标签: python python-3.x

我使用以下脚本向google发出请求。但是,当我执行它时,我得到错误说明:

client.send(“GET / HTTP / 1.1 \ r \ nHost:google.com \ r \ n \ r \ n”) TypeError:需要类似字节的对象,而不是'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)

任何有关纠正问题的指示都将受到赞赏。

1 个答案:

答案 0 :(得分:4)

您需要选择encoding,例如:

client.send("GET / HTTP/1.1\r\nHost: google.com\r\n\r\n".encode(encoding='utf-8'))

另请参阅:Python Socket Send Buffer Vs. StrTypeError: 'str' does not support the buffer interface