如何在请求中添加标头

时间:2015-06-14 17:40:34

标签: python python-requests

是否还有其他优雅的方法可以为请求添加标头:

import requests

requests.get(url,headers={'Authorization', 'GoogleLogin auth=%s' % authorization_token}) 

不起作用,而urllib2工作:

import urllib2

request = urllib2.Request('http://maps.google.com/maps/feeds/maps/default/full')
request.add_header('Authorization', 'GoogleLogin auth=%s' % authorization_token)
urllib2.urlopen(request).read()

4 个答案:

答案 0 :(得分:6)

您可以通过将字典作为参数传递来添加标题。

这应该有效:

add_header()

为什么您的代码无效?

没有将字典传递给headers参数。您正在根据request.add_header()函数中定义的格式传递值。

根据文件,

  

requests.get(url,params = None,headers = None,cookies = None,auth = None,   超时=无)

     

headers - (可选)用于发送的HTTP标头字典   请求。

为什么request.add_header()有效?

您使用urllib2添加标头的方式有效,因为该功能在Request.add_header(key, val) 模块中定义为。

    var span=$('#view');
    span.text("Changing text does not update").css("display","inline-block").height();
    span.css("display","inline");

它接受两个参数 -

  1. 标题名称(前面定义的dict键)
  2. 标头值(前面定义的dict中相应键的值)

答案 1 :(得分:1)

您可以使用以下格式将自定义标头添加到请求请求中,该格式使用在其语法中具有冒号:的Python字典。

r = requests.get(url, headers={'Authorization': 'GoogleLogin auth=%s' % authorization_token})

这在Requests documentation for custom headers中显示如下:

>>> url = 'https://api.github.com/some/endpoint'
>>> headers = {'user-agent': 'my-app/0.0.1'}

>>> r = requests.get(url, headers=headers)

答案 2 :(得分:0)

您可以通过headers关键字传递字典。这在Python中非常优雅: - )

 headers = {
     "header_name": "header_value",
 }

 requests.get(url, headers=headers)

答案 3 :(得分:0)

标题应该是一个字典,因此这应该起作用

headers= {}
headers['Authorization']= 'GoogleLogin auth=%s' % authorization_token

requests.get(url, headers=headers)