2010-07-14 7 views
12

Je signale au serveur en utilisant Hudson boucle de la ligne de commande en utilisant la following--Python équivalent post Curl HTTP

curl -X POST -d '<run><log encoding="hexBinary">4142430A</log><result>0</result><duration>2000</duration></run>' \ 
http://user:[email protected]/hudson/job/_jobName_/postBuildResult 

comme indiqué dans le hudson documentation..can j'émulent la même chose en utilisant python. Je ne veux pas utiliser pyCurl ou envoyer cette ligne via os.system() .. y a t-il un moyen de sortir en utilisant python brut?

+0

question similaire ici: http://stackoverflow.com/questions/1990976/convert-a-curl-post-request-to-python- only-using-standard-libary – Jordan

Répondre

18
import urllib2 

req = urllib2.Request(url, data) 
response = urllib2.urlopen(req) 
result = response.read() 

où les données sont les données codées que vous voulez POST.

Vous pouvez encoder un dict en utilisant urllib comme ceci:

import urllib 

values = { 'foo': 'bar' } 
data = urllib.urlencode(values) 
+0

Doux et simple, merci! Cependant, pour coder les données, j'ai dû utiliser 'urllib.urlencode' comme' encoder' n'a pas été trouvé. –