Python encode()不起作用?

时间:2018-03-17 00:20:18

标签: python python-3.x httprequest

我已经尝试了encode()但它没有用。我一直收到TypeError: must be str, not bytes,因为通常我会TypeError: a bytes-like object is required, not 'str'

ip = socket.gethostbyname("google.com")
port = 80
robot = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
payload = "Hello world"
try:
    robot.connect((ip, port)))
    robot.send('GET '+payload.encode()+' HTTP/1.1\n\n')
except socket.error:
    print("connection lost")
robot.close()

我不明白我做错了什么?

1 个答案:

答案 0 :(得分:3)

如果查看socket.send的文档,可以看到第一个参数是bytes,而不是字符串。您encode一个具有特定编码的字符串将其转换为字节,并使用特定编码的decode字节将它们转换为字符串:

robot.send(b'GET ' + payload.encode() + b' HTTP/1.1\n\n')

str.encodestr.decode默认为utf-8