2009-04-25 9 views
13

In Python 2 war es möglich, die Debug-Ausgabe von urllib wie diese, indem Sie bewegt hat bekommen worden zuEinschalten Debug-Ausgabe für Python 3 urllib

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

jedoch in Python 3 sieht es

http.client.HTTPConnection.set_debuglevel(level) 

Allerdings verwende ich urllib nicht http.client direkt. Wie kann ich es einrichten, so dass meine HTTP-Anfrage Debugging-Informationen auf diese Weise anzeigt?

Hier ist, was ich "m so weit mit. Was ist der beste Weg, um fortzufahren, wenn ich Debug-Informationen in der Lage sein wollen?

#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

Dies ist in der Tat ein Python-Fehler. Eingereicht https://bugs.python.org/issue26892. –

Antwort

12

Sie das erste Mal richtig waren zu bekommen. Sie können einfach die Zeile http.client.HTTPConnection.debuglevel = 1 am Anfang der Datei auf HTTP-Debugging aktivieren applikationsweit. urllib.request verwendet immer noch http.client.

Es scheint, dass es auch eine Möglichkeit, die Debugebene für einen einzelnen Handler zu setzen (durch urllib.request.HTTPHandler(debuglevel=1) die Schaffung und den Aufbau einen opener mit, dass), aber auf meiner Installation von Python3 (3.0b3) ist es nicht wirklich impl emented. Ich stelle mir vor, dass sich das in neueren Versionen geändert hat!