json - 对 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()
没运气。
- 在请求中设置
Content-Type
和Accept
到。这没有多大意义,但值得一试。application/json
multipart/form-data
按照开发工具中的说明发送我的请求数据。没运气。
这与以下问题几乎完全相同:Response content-type text/html while expected application/json,但那个问题处于更具体的上下文中,并且该解决方案不适用于我。
谢谢!
解决方案
我和你有同样的问题经过 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))
希望对你有帮助
推荐阅读
- ios - 如何快速分享视频/图像到 snapchat 故事?
- python - 将行号添加到熊猫中的列字符串
- postgresql - Postgres BRIN Index with Partitioning
- datadog - 不同的警报阈值取决于当前时间
- mysql - 如何根据mysql中的条件连接没有公共列的表
- faunadb - 如何在animaldb中获取嵌套数据?
- spring - 如何使用多个数据源配置相同的 Spring JPARepository?
- autodesk-forge - Autodesk Forge 移动应用程序按用户多选
- php - Laravel 来宾中间件未正确重定向
- javascript - 如何阻止页面在移动设备上自动向上滚动?(使用 Blogger 模板)