2009-04-25 20 views
13

W python 2, było to możliwe, aby uzyskać dane wyjściowe debugowania z urllib wykonującWłączanie wyjścia debugowania dla Pythona 3 urllib

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

Jednakże w python 3 wygląda to został przeniesiony do

http.client.HTTPConnection.set_debuglevel(level) 

Korzystam jednak bezpośrednio z adresu urllib, a nie http.client. Jak mogę to ustawić, aby moje żądanie http wyświetlało informacje debugowania w ten sposób?

Oto co "używam tak daleko. Jaki jest najlepszy sposób postępowania, jeśli chcę, aby być w stanie uzyskać informacje debugowania?

#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") 
# ... 
+2

To rzeczywiście jest błąd w Pythonie. Przesłano https://bugs.python.org/issue26892. –

Odpowiedz

12

Miałaś rację za pierwszym razem. Można po prostu dodać linię http.client.HTTPConnection.debuglevel = 1 na początku pliku, aby włączyć debugowanie HTTP aplikacji szerokości. urllib.request nadal używa http.client.

wydaje się, że istnieje również sposób ustawić DebugLevel dla pojedynczego przewodnika (poprzez tworzenie urllib.request.HTTPHandler(debuglevel=1) i budowania otwieracz z tym), ale na mojej instalacji Python3 (3.0b3) nie jest to faktycznie impl emented. Wyobrażam sobie, że to się zmieniło w nowszych wersjach!