urllib2.Request.add_header() 添加header失败?

某网站api,每次进行POST请求时,需要开发者提交一个header进行验证,类似这样{'User-Key': 'ABCD1234'},但是我发现使用urllib2.Request.add_header()进行添加,会失败?print req.get_header('User-Key')会打印None,而且提交过去,服务器会返回验证失败的状态码

url = 'API的URL'
data = {'data1': '12345'}

req = urllib2.Request(url)
req.add_header('User-Key': 'ABCD1234')
req.add_data(urllib.urlencode(data))

print req.get_header('User-Key') 
# None

不需要验证User-Key的api,则能够成功返回json。
我发现我add_header一个常规的header,是可行的,例如:

req.add_header('Content-type', 'application/json')
print req.get_header('Content-type') 
# application/json

试着网上找了很久,一直没有头绪,谢谢了

阅读 16.2k
1 个回答

class Request:
def add_header(self, key, val):
self.headers[key.capitalize()] = val

很明显,你的key在存入时被capitalize()了。
print req.get_header('User-Key'.capitalize())

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题