Включение отладочного вывода для python 3 urllib
-
16-09-2019 - |
Вопрос
В 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) это фактически не реализовано.Я предполагаю, что это изменилось в более поздних версиях!