Python 3.3+ (またはその他の組み込みの python HTTP クライアント ライブラリ)を使用http.client
して、チャンクされた HTTP 応答を一度に正確に 1 つの HTTP チャンクで読み取るにはどうすればよいですか?
http.client
HTTP のチャンク転送エンコーディングを使用して応答を書き込むサーバー用に、既存のテスト フィクスチャ (を使用して python で記述) を拡張しています。簡単にするために、クライアントが HTTP チャンクを受信するたびにメッセージを出力できるようにしたいとします。
私のコードは、大きな応答を読み取るためのかなり標準的なパターンに従います。
conn = http.client.HTTPConnection(...)
conn.request(...)
response = conn.getresponse()
resbody = []
while True:
chunk = response.read(1024)
if len(chunk):
resbody.append(chunk)
else:
break
conn.close();
ただし、これは、サーバーが 10 バイトのチャンクまたは 10MiB のチャンクを送信しているかどうかに関係なく、1024 バイトのチャンクを読み取ります。
私が探しているのは、次のようなものです。
while True:
chunk = response.readchunk()
if len(chunk):
resbody.append(chunk)
else
break
これが で不可能な場合http.client
、別の組み込みの http クライアント ライブラリで可能ですか? 組み込みのクライアント lib では不可能な場合、pip
インストール可能なモジュールでは可能ですか?