Python Glossary English

все 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Сообщить о неточности