все Python 3urllib.requestпонятие
urllib.request.BaseHandler
сборщик обработчиков
Базовый класс обработчиков urllib: от него наследуют свои обработчики схем, правки запросов и ответов.
Синтаксис
class MyHandler(urllib.request.BaseHandler): def <scheme>_open(self, req): ...
Методы находятся по имени: <схема>_open(req) открывает URL, <схема>_request(req) правит запрос до отправки, <схема>_response(req, resp) — ответ после, http_error_<код> обрабатывает ошибку. Опечатка в имени метода ошибки не даёт — обработчик просто никогда не вызывается. Порядок в цепочке задаёт атрибут handler_order: меньше — раньше, по умолчанию 500.
Примеры
import io, urllib.request, urllib.response
class Echo(urllib.request.BaseHandler):
def echo_open(self, req):
body = req.selector.encode()
return urllib.response.addinfourl(io.BytesIO(body), {}, req.full_url)
opener = urllib.request.build_opener(Echo)
print(opener.open('echo://demo/hello').read()) # → b'/hello'
print(Echo.handler_order) # → 500
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности