Python请求HTTP响应406

时间:2019-05-12 17:15:38

标签: python python-3.x http request

我有一个自己的域,用于存储json文件(http://example.com/file.json)。使用直接链接在浏览器中访问文件时,返回的json就很好。但是,在下面的python代码中使用相同的方法时,则http响应为 406 。有什么想法吗?

import requests
url = 'http://example.com/file.json'
r = requests.get(url, headers={"Accept":"text/html"})
print(r.status_code)
print(r.headers)

打印:

406
{'Server': 'nginx/1.14.1', 'Date': 'Sun, 12 May 2019 16:53:25 GMT', 'Content-Type': 'text/html; charset=iso-8859-1', 'Content-Length': '226', 'Connection': 'k
eep-alive'}

2 个答案:

答案 0 :(得分:0)

通过使用其他User-Agent解决。默认的Python User-Agent 'python-requests/2.21.0'可能已被托管公司阻止。

r = requests.get(url, headers={"User-Agent": "XY")

某些可能的代理人:List of User Agent strings

答案 1 :(得分:0)

您自己接受的答案很可能是不正确的。此错误表示 Accept 标头的值与响应的 Content-Type 不匹配。如果您发送 Accept: */* ,它会起作用(至少 406 不会返回)。