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

urlopen调用API无内容时返回格式不一致,是自身特性还是API问题?

问题分析与结论

这绝对不是urlopen的预期行为,问题出在你调用的HTTP端点服务上。

原因说明

  • urlopen仅负责原样返回服务器发送的响应内容,不会主动修改或生成任何响应体内容。不管服务器返回空字符串''还是空数组[],都是后端接口自身的输出,urlopen只是原封不动地传递给你。
  • 规范的API在无数据返回时,应保持响应格式一致:要么统一返回空数组[],要么返回结构统一的JSON对象(比如{"data": []}),甚至可以返回204 No Content状态码(此时响应体为空)。出现两种不同的空响应格式,完全是后端接口的逻辑漏洞。

临时解决方法

为避免JSON解析报错,可在解析前先做格式统一处理:

import json
from urllib.request import urlopen
import certifi

response = urlopen(url, cafile=certifi.where())
raw_response = response.read().decode("utf-8")

# 统一格式:空字符串转为空数组
if raw_response.strip() == '':
    parsed_data = []
else:
    parsed_data = json.loads(raw_response)

根本解决建议

联系该API的提供者,反馈响应格式不一致的问题,要求他们统一无数据场景下的输出格式,这才是彻底解决问题的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 17:09:53