Вопрос

В python 2 можно было получить отладочный вывод из urllib, выполнив

import httplib
import urllib
httplib.HTTPConnection.debuglevel = 1
response = urllib.urlopen('http://example.com').read()

Однако в python 3, похоже, это было перенесено в

http.client.HTTPConnection.set_debuglevel(level)

Однако я использую urllib, а не http.client напрямую.Как я могу настроить это так, чтобы в моем http-запросе отображалась отладочная информация таким образом?

Вот что я использую до сих пор.Каков наилучший способ продолжить, если я хочу иметь возможность получать отладочную информацию?

#Request Login page
cookiejar = http.cookiejar.CookieJar()
opener = urllib.request.build_opener(urllib.request.HTTPCookieProcessor(cookiejar))
request = urllib.request.Request(options.uri)
add_std_headers(request)
response = opener.open(request)
response_string = response.read().decode("utf8")
# ...
Это было полезно?

Решение

Ты был прав в первый раз.Вы можете просто добавить строку http.client.HTTPConnection.debuglevel = 1 в начале вашего файла включите HTTP-отладку для всего приложения. urllib.request все еще использует http.client.

Похоже, что есть также способ установить уровень отладки для одного обработчика (путем создания urllib.request.HTTPHandler(debuglevel=1) и создаю открывалку с этим), но при моей установке Python3 (3.0b3) это фактически не реализовано.Я предполагаю, что это изменилось в более поздних версиях!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top