Using http.client
在 Python 3.3+(或任何其他内置 python HTTP 客户端库)中,如何一次读取一个分块 HTTP 响应一个 HTTP 块?
我正在扩展现有的测试装置(使用 python 编写)http.client
)对于使用 HTTP 的分块传输编码写入其响应的服务器。为了简单起见,假设我希望能够在客户端收到 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 客户端库?如果内置客户端库无法实现,是否可以使用pip
可安装模块?
我发现像这样使用 requests 库更容易
r = requests.post(url, data=foo, headers=bar, stream=True)
for chunk in (r.raw.read_chunked()):
print(chunk)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)