如何使用urllib2在Python中发送标头

时间:2015-10-03 18:09:03

标签: python json

我正在尝试从网站请求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

3 个答案:

答案 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()