Включение вывода отладки для python 3 urllib
В 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")
# ...
Ответы
Ответ 1
Вы были правы в первый раз. Вы можете просто добавить строку http.client.HTTPConnection.debuglevel = 1
в начале вашего файла, чтобы включить HTTP-отладку в приложении. urllib.request
по-прежнему использует http.client
.
Кажется, что есть также способ установить уровень debuglevel для одного обработчика (создав urllib.request.HTTPHandler(debuglevel=1)
и создав для этого открыватель), но при установке Python3 (3.0b3) он фактически не реализован. Я предполагаю, что это изменилось в более поздних версиях!