我正在编写一个简单的SocketServer.TCPServer请求处理程序(StreamRequestHandler),它将捕获请求,包括标题和消息正文。这是为了伪造一个我们可以用于测试的HTTP服务器。
我没有问题抓取请求行或标题。
如果我尝试从rfile中获取更多内容,超出了实际内容大小,则代码会阻塞。如何获取所有请求正文而不知道其大小?换句话说,我没有Content-Size头信息。
这是我目前的一部分代码:
我没有问题抓取请求行或标题。
如果我尝试从rfile中获取更多内容,超出了实际内容大小,则代码会阻塞。如何获取所有请求正文而不知道其大小?换句话说,我没有Content-Size头信息。
这是我目前的一部分代码:
def _read_request_line(self):
server.request_line = self.rfile.readline().rstrip('\r\n')
def _read_headers(self):
headers = []
for line in self.rfile:
line = line.rstrip('\r\n')
if not line:
break
parts = line.split(':', 1)
header = (parts[0].strip(), parts[0].strip())
headers.append(header)
server.request_headers = headers
def _read_content(self):
server.request_content = self.rfile.read() # blocks
content-length
并在未提供时将其默认值设为零。正如 @Keith 提到的那样,有效的客户端应该提供此值。 - Travis Parks