我正在尝试从网站请求API,如果我没有发送
带有标题的接受:application / vnd.travis-ci.2 + json
,响应将以XML格式显示。我想要的是JSON格式。所以,我需要用吹码发送那个标题。
url = 'https://api.example.org/books/title'
import json, urllib2
response = urllib2.urlopen(url)
jsonString = response.read()
repo = json.loads(jsonString)
上述内容没有做任何事情,因为url
以xml格式返回,除非我向请求添加Accept: application/vnd.travis-ci.2+json
答案 0 :(得分:2)
您可以按以下方式传递标题
request = urllib2.Request(url , headers={"Accept" : "application/json"})
<强>更新强>
url = 'https://api.example.org/books/title'
import json, urllib2
request = urllib2.Request(url , headers={"Accept" : "application/json"})
jsonString = urllib2.urlopen(request).read()
答案 1 :(得分:1)
您不能直接使用urlopen
执行此操作,但可以使用Request
。
request = urllib2.Request(url, headers={'Accept': 'application/vnd.travis-ci.2+json'})
response = urllib2.urlopen(request)
答案 2 :(得分:1)
您可以使用request
传递自定义标头。另请参阅丹尼尔罗斯曼的答案,他更快地给出了同样的答案。
import urllib2
request = urllib2.Request("https://api.example.org/books/title", headers={"Accept" : "application/vnd.travis-ci.2+json"})
contents = urllib2.urlopen(request).read()