出于教育目的,没有任何重要性,我想实现一个脚本,可以进行简单的HTTP请求,并在控制台中显示答案内容(以纯文本形式)。我用以下代码实现了:
import socket
import sys
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8080)
print >>sys.stderr, 'connecting to %s port %s' % server_address
sock.connect(server_address)
message = 'GET /php.php HTTP/1.1\r\n'
message += 'Host: localhost:8080\r\n\r\n'
print >>sys.stderr, 'sending "%s"' % message
sock.sendall(message)
data = sock.recv(10000000)
print >>sys.stderr, 'received "%s"' % data
sock.close()
我只需构建HTTP请求、将其发送到服务器并等待答案。
现在问题来了:我不知道如何读取整个答案,我知道有一个标题是“content-length”(假设它总是存在的)。如何在不必执行sock.recv(1000000000000000000)
的情况下读取所有内容?