2009-04-25 7 views
13

En python 2, il est possible d'obtenir une sortie de débogage de urllib en faisantActivation de la sortie de débogage pour python 3 urllib

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

Cependant, en python 3, il ressemble à ceci a été déplacé vers

http.client.HTTPConnection.set_debuglevel(level) 

Cependant, j'utilise urllib pas http.client directement. Comment puis-je le configurer pour que ma requête http affiche les informations de débogage de cette manière?

Voici ce que je "suis en utilisant à ce jour. Quelle est la meilleure façon de procéder si je veux être en mesure d'obtenir des informations de débogage?

#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

Ceci est en effet un bug Python. Envoyé https://bugs.python.org/issue26892. –

Répondre

12

Vous aviez raison la première fois. Vous pouvez simplement ajouter la ligne http.client.HTTPConnection.debuglevel = 1 au début de votre fichier pour activer le débogage HTTP l'application à l'échelle. urllib.request utilise encore http.client.

Il semble qu'il y ait aussi un moyen de régler le debuglevel pour un seul gestionnaire (en créant urllib.request.HTTPHandler(debuglevel=1) et la construction d'un ouvre-porte que), mais sur mon installation de Python3 (3.0b3) ce n'est pas fissuré. J'imagine que cela a changé dans les versions plus récentes!

Questions connexes