You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

requests.get报ChunkedEncodingError但Postman访问正常如何解决?

解决方法

方案1:使用stream模式跳过严格的分块校验

出现该错误的核心原因是内部服务返回的Transfer-Encoding: chunked格式不符合标准规范,Postman对非标准响应容错性更高,而requests默认会严格校验分块长度,遇到空分块就会抛出异常。开启stream模式直接迭代原始字节即可绕过校验:

import requests

# 新增stream=True参数不触发自动分块解析
r = requests.get(url, params=params, stream=True)
pdf_bytes = b""
# 迭代原始响应块,过滤空内容块
for chunk in r.iter_content(chunk_size=4096):
    if chunk:
        pdf_bytes += chunk

# 保存PDF文件
with open("result.pdf", "wb") as f:
    f.write(pdf_bytes)

方案2:对齐Postman请求头

内部服务可能会校验请求头特征,requests默认请求头和Postman不一致,会导致服务端返回异常响应。将Postman发送的所有请求头完整复制到代码中即可:

import requests

# 替换为你自己Postman请求中的完整头信息
headers = {
    "User-Agent": "PostmanRuntime/7.32.2",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, deflate, br",
    "Connection": "keep-alive"
}
r = requests.get(url, params=params, headers=headers, stream=True)
# 后续和方案1一致,迭代获取内容

如果是自签证书的内部HTTPS接口,可新增verify=False参数跳过证书校验。

方案3:使用urllib3底层请求绕过requests封装

如果上述方案均无效,直接使用urllib3发送请求,完全绕过requests的分块解析逻辑:

import urllib3

# 内部服务如果是自签HTTPS,可添加cert_reqs='CERT_NONE'跳过校验
http = urllib3.PoolManager(cert_reqs='CERT_NONE')
response = http.request("GET", url, fields=params)
with open("result.pdf", "wb") as f:
    f.write(response.data)

内容的提问来源于stack exchange,提问作者wkgrcdsam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 06:24:05