2010-06-24 28 views
3

je fais:python httplib: obtenir les en-têtes de requête sortante

con = HTTPConnection(SERVER_NAME) 
con.request('GET', PATH, HEADERS) 
resp = con.getresponse() 

Pour des raisons de débogage, je veux voir la demande je (ses champs, le chemin, la méthode, ..). Je m'attendrais à ce qu'il y ait une sorte de con.getRequest() ou quelque chose du genre mais n'a rien trouvé. Des idées?

Répondre

3

Essayez

con.setdebuglevel(1) 

qui permettra la sortie de débogage, qui, entre autres choses, affiche toutes les données qu'il envoie. Si vous voulez seulement obtenir les en-têtes et la ligne de requête, pas le corps de la requête (ou toute autre sortie de débogage), vous pouvez sous-classer HTTPConnection et remplacer la méthode _output, qui est appelée par la classe elle-même pour produire pour le corps de la requête). Vous voulez faire quelque chose comme ceci:

class MyHTTPConnection(HTTPConnection): 
    def _output(self, s): 
     print repr(s) 
     super(MyHTTPConnection, self)._output(s) 

Pour plus de détails sur comment cela fonctionne et les alternatives possibles, consultez le code source httplib.