Tra*_*rks 7 python httprequest tcpserver
我正在编写一个简单的SocketServer.TCPServer请求处理程序(StreamRequestHandler),它将捕获请求,以及标头和消息正文.这是用于伪造我们可以用于测试的HTTP服务器.
我抓住请求行或标题没有问题.
如果我试图从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
Run Code Online (Sandbox Code Playgroud)
基思的评论是正确的.这是它的样子
length = int(self.headers.getheader('content-length'))
data = self.rfile.read(length)
Run Code Online (Sandbox Code Playgroud)