2009-04-25 14 views
13

In Python 2, è stato possibile ottenere l'output di debug da urllib facendoAccensione output di debug per Python 3 urllib

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

Tuttavia, in python 3 sembra che questo è stato spostato al

http.client.HTTPConnection.set_debuglevel(level) 

Tuttavia, sto usando urllib non http.client direttamente. Come posso configurarlo in modo che la mia richiesta http visualizzi le informazioni di debug in questo modo?

Ecco quello che ho "m utilizzando finora. Qual è il modo migliore di procedere, se voglio essere in grado di ottenere le informazioni di debug?

#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

Questo è davvero un bug Python. Inviato https://bugs.python.org/issue26892. –

risposta

12

Avevi ragione la prima volta. Si può semplicemente aggiungere la riga http.client.HTTPConnection.debuglevel = 1 all'inizio del file per attivare il debug HTTP applicazione a livello. urllib.request usa ancora http.client.

sembra che ci sia anche un modo per impostare il debuglevel per un singolo gestore (con la creazione di urllib.request.HTTPHandler(debuglevel=1) e la costruzione di un apriscatole con quella), ma sulla mia installazione di Python3 (3.0b3) non è realmente impl emented. Immagino che sia cambiato in versioni più recenti!