Python urllib2.Request.get_header 文档在哪里?
我正在开发一个库,这个库需要对urllib2.Request实例进行预处理(使用urllib2.BaseHandler.xxx_request回调)。其中一些预处理程序需要检查提供的urllib2.Request实例中的头部信息。
我发现官方的Python文档只列出了添加头部和检查头部是否存在的方法。不过,有一个没有文档说明的urllib2.Request.get_header方法,但它似乎有一些小问题。例如,它会改变多词头部的大小写:
from urllib2 import Request
req = Request('http://www.example.com')
req.add_header('Content-Type', 'application/x-www-form-urlencoded')
req.get_header('Content-Type') # Produces nothing
req.get_header('Content-type') # Produces 'application/x-www-form-urlencoded'
那么,get_header这个方法有没有官方支持或文档说明呢?如果没有,是否有更好的方法来读取urllib2.Request实例中的头部值?
1 个回答
4
我相信 get_header
是官方支持的,但我在文档中找不到相关的说明。
关于你提到的“get_header 返回 None”的问题,查看 urllib2.py 的源代码,发现 add_header
方法在保存头部的键值对之前,会先调用 key.capitalize()
,这就是为什么 get_header('Content-type')
能正常工作,而其他形式却不行的原因:
class Request:
def add_header(self, key, val):
self.headers[key.capitalize()] = val
>>> 'content-type'.capitalize()
'Content-type'