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