9

ヘッダーとメッセージ本文とともに、要求をキャプチャする単純な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
4

1 に答える 1