2009-04-25 9 views
13

en Python 2, fue posible obtener una salida de depuración de urllib haciendoEncendido de salida de depuración para Python 3 urllib

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

Sin embargo, en Python 3 que tiene este aspecto ha sido movido a

http.client.HTTPConnection.set_debuglevel(level) 

Sin embargo, estoy usando urllib no http.client directamente. ¿Cómo puedo configurarlo para que mi solicitud http muestre la información de depuración de esta manera?

Esto es lo que "estoy usando hasta ahora. ¿Cuál es la mejor manera de proceder si quiero ser capaz de obtener información de depuración?

#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

Esto es de hecho un error de Python. Enviado https://bugs.python.org/issue26892. –

Respuesta

12

Tenías razón la primera vez. Usted puede simplemente añadir la línea http.client.HTTPConnection.debuglevel = 1 en el inicio de su archivo para activar la depuración de HTTP de aplicaciones de todo. urllib.request todavía utiliza http.client.

parece que también hay una manera de establecer el debuglevel para un solo controlador (mediante la creación de urllib.request.HTTPHandler(debuglevel=1) y la construcción de un abridor con eso), pero en mi instalación de Python3 (3.0b3) en realidad no es impl ementado ¡Me imagino que eso ha cambiado en versiones más recientes!