Skip to main content
 首页 » 编程设计

python之请求响应总是 JSON 吗

2025年05月04日10kuangbin

当我使用 Requests 模块发出 POST 请求时,我试图了解我到底得到了什么——它总是 JSON 吗?似乎我得到的每个响应似乎都是 JSON,但我不确定。

r 是我的响应对象,当我这样做时:

print r.apparent_encoding 

似乎总是返回ascii

当我尝试 type() 时:

>>>print type(r) 
<class 'requests.models.Response' 

我将 print r.text 的输出粘贴到一个 JSON 验证器中,它没有报告任何错误。那么我是否应该假设 Requests 在这里为我提供了 JSON 对象?

请您参考如下方法:

响应可以是任何内容。如果您已发布到 REST 端点,它通常会使用 JSON 进行响应。如果是这样,requests 将检测到它并允许您通过 .json() 方法对其进行解码。

但是您完全有可能发布到一个普通的 web URL,实际上假装是一个浏览器,除非服务器正在做一些非常聪明的事情,否则它只会用它为浏览器提供的标准 HTML 进行响应。在这种情况下,执行 response.json() 将引发 ValueError。