首页 > 解决方案 > 对 POST 请求的响应具有 text/html Content-Type 而我需要 application/json,而 Chrome Dev Tools 显示 JSON 响应

问题描述

我正在使用 Python 的requests模块向某个网站发出 POST 请求。我的目标是获得 JSON 格式的响应。
问题:Content-Type响应的标题是text/html. 尝试将其解析为 JSON 会引发错误。打印响应的内容给了我一堆我不想要的复杂的 html。
但是,在 Chrome 开发工具 > 网络上,我可以看到与 JSON 对象相同的 POST 请求响应。此外,Content-Type开发工具上的响应标题清楚地表明application/json. 我的目标是在我的 Python 脚本中
强制Content-Type响应。application/json我尝试了以下方法:

response.headers['Content-Type'] = 'application/json; charset=utf-8'
response.json()

没运气。

这与以下问题几乎完全相同:Response content-type text/html while expected application/json,但那个问题处于更具体的上下文中,并且该解决方案不适用于我。

谢谢!

标签: jsonpython-requestscontent-type

解决方案


我和你有同样的问题经过 10 小时的研究后,我使用下面的代码解决了我的问题

import requests
import json

url = ""
headers = {"content-type": "application/json; charset=UTF-8"}
payload = {}
r = requests.post(url, headers=headers, data=json.dumps(payload))

希望对你有帮助


推荐阅读