原始HTTP客户端不返回任何数据

时间:2016-07-18 02:37:54

标签: python sockets http

import socket

host = 'www.google.com'
port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)


try :
    client.connect((host, port))
except socket.error:
    print ("Err")

package = '00101'

package.encode('utf-8')


client.sendall(package.encode(encoding = 'utf-8'))

response = client.recv(4096)


print (response.decode('UTF-8')

我不断收到b''作为我的回复,所以我试图解码它。解析时收到的错误是unexpected EOF。我的打印中是否应该包含decoding()功能?我已尝试仅打印响应,.decode()功能未解码。我该怎么办?

1 个答案:

答案 0 :(得分:1)

您需要发送有效的HTTP请求。例如:

package = b'''GET /HTTP/1.1
Host: www.google.com

'''

client.sendall(package)

在我的机器上正确返回重定向。请注意结束请求的package末尾的空行。

当您发送b'00101'并开始阅读时,Google服务器尚未处理您的请求并且不会返回任何内容。通过发送尾随换行符(package = b'00101\n'),它将开始处理您的请求,您将获得:

...
<p>Your client has issued a malformed or illegal request.  <ins>That’s all we know.</ins>