Python urllib2.Request.get_header документация? - PullRequest
2 голосов
/ 22 марта 2011

Я работаю над библиотекой, которая включает в себя предварительную обработку экземпляров 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 голосов
/ 22 марта 2011

Я уверен, что get_header официально поддерживается, но я не могу найти его в документации.

Что касается вашей проблемы "get_header returning 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'
...