requests - requests.get 时出现 ChunkedEncodingError,但使用 Postman 时则不会

wkg*_*sam 11 python python-3.x python-requests

我有一个只能从我们的 VPC 内部访问的 URL。

如果我通过 Postman 输入 URL,我就可以看到内容(这是一个 Pdf),并且可以将输出完美地保存到文件中。

然而,当尝试使用 python requests 来自动执行此操作时

import requests
r = requests.get(url, params=params)
Run Code Online (Sandbox Code Playgroud)

我得到一个例外

ChunkedEncodingError: ("Connection broken: InvalidChunkLength(got length b'', 0 bytes read)", InvalidChunkLength(got length b'', 0 bytes read))
Run Code Online (Sandbox Code Playgroud)

其他 Stackoverflow 问题并没有真正帮助解决这个问题,而且这个问题始终可以通过请求重现

Raj*_*jha 15

我认为此错误的原因是服务器未正确编码该块。某些块大小不是整数 b'',因此您会收到块编码错误。

尝试下面的代码

import requests
from requests.exceptions import ChunkedEncodingError

response = requests.get(url, params=params, stream=True)
try:
    for data in response.iter_content(chunk_size=1024):
        print(data)
except ChunkedEncodingError as ex:
    print(f"Invalid chunk encoding {str(ex)}")
Run Code Online (Sandbox Code Playgroud)