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

Python requests调用API报simplejson.errors.JSONDecodeError错误怎么解决

报错根因

simplejson.errors.JSONDecodeError: Expecting value: line 1 column 1 (char 0) 错误说明接口返回的响应内容不是合法JSON格式,要么响应体为空,要么返回的是HTML错误页、纯文本报错信息,通常伴随非2xx的HTTP状态码。

常见触发原因与解决方法
  • 原因1:Authorization请求头格式错误
    大部分JWT鉴权的接口要求Authorization头的前缀为Bearer,你当前代码写的是token前缀,格式不匹配会触发401未授权错误,接口返回非JSON的报错内容。
    解决:将请求头里的Authorization值修改为Bearer 你的令牌,格式参考:

    header = {"Authorization":'Bearer {}'.format('你的令牌字符串')}
    
  • 原因2:多余的Content-Type请求头导致请求被拦截
    GET请求不需要传递请求体,你添加的Content-Type: application/json头没有实际作用,部分严格校验的接口会直接拒绝这类不符合规范的请求。
    解决:删除该请求头即可。

  • 原因3:日期参数格式不一致触发参数校验失败
    你代码里的两个查询参数格式不统一:from_date用的是带T的ISO标准时间格式,to_date用的是空格分隔的时间格式,接口参数校验失败会返回400错误,响应内容不是JSON。
    解决:统一两个时间参数的格式,都调整为ISO格式:

    data = {"from_date":"2021-06-15T07:19:32", "to_date":"2021-09-16T00:01:09"}
    
  • 原因4:未做状态码校验直接解析JSON
    建议先打印响应状态码和原始响应内容,定位具体错误后再处理:

    import requests
    url = "https://xxxxxxxxxxxxxx/purchases"
    header = {"Authorization":'Bearer {}'.format('eyXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX')}
    data = {"from_date":"2021-06-15T07:19:32", "to_date":"2021-09-16T00:01:09"}
    response = requests.get(url, params=data, headers=header)
    # 先排查实际返回内容
    print("响应状态码:", response.status_code)
    print("响应原始内容:", response.text)
    # 状态码正常再解析JSON
    if response.status_code == 200:
        print(response.json())
    

内容的提问来源于stack exchange,提问作者Gopakumar N G

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:15:07