Python的TPCServer rfile.read块(Python TPCServer rfil

2019-07-31 23:58发布

我写一个简单的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

Answer 1:

Keith的评论是正确的。 这里是什么样子

     length = int(self.headers.getheader('content-length'))
     data = self.rfile.read(length)


文章来源: Python TPCServer rfile.read blocks