Включение вывода отладочной информации для python 3 urllib - PullRequest
16 голосов
/ 26 апреля 2009

В 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 Ответ

16 голосов
/ 26 апреля 2009

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

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

...