2012-04-15 15 views
0

Ich habe Schwierigkeiten, einen Rest API Post mit einem Anbieter API arbeiten und hoffe, jemand kann mir einen Zeiger geben.Python fügen Sie Daten zum Postkörper

Die Absicht besteht darin, einen CLI-Befehl dem Post-Body zuzuführen und an ein Gerät zu übergeben, das die Ausgabe zurückgibt.

Der Aufruf sieht wie folgt aus: (dies für alle anderen Anrufe funktioniert, aber dies ist anders, weil der Körper Entsendung)

def __init__(self,host,username,password,sid,method,http_meth): 
    self.host=host 
    self.username= username 
    self.password= password 
    self.sid=sid 
    self.method=method 
    self.http_meth=http_meth 

    def __str__(self): 
    self.url = 'http://' + self.host + '/rest/' 
    self.authparams = urllib.urlencode({ "session_id":self.sid,"method": self.method,"username": self.username, 
     "password": self.password, 
    }) 

call = urllib2.urlopen(self.url.__str__(), self.authparams).read() 
return (call) 

Egal, wie ich dies versucht haben, ich kann es richtig zu arbeiten. Hier ist ein Auszug aus der API-Dokumentation, die erklären, wie diese Methode verwenden:

diese APIs zu bearbeiten, platzieren Sie Ihre CLI-Befehle in dem HTTP-Post-Puffer, und dann die Methodennamen, Session-ID und andere Parameter in die URL

Kann mir jemand eine Idee geben, wie man das richtig macht. Ich bin kein Entwickler und versuche das richtig zu lernen. Zum Beispiel, wenn ich den Befehl "Hilfe" im Post-Body senden wollte?

Vielen Dank für jede Führung

+1

Sie wahrscheinlich besser dran, die Anfragen Bibliothek http wäre. python-requests.org/en/latest/index.html es funktioniert auf einer höheren Ebene als urllib und ist einfacher zu arbeiten. –

+0

werden Ihre Authentifizierungsparameter als Teil der URL übergeben? Ich meine etwas wie URL? Sessionid = ... & ... –

+0

Ich stimme Tom zu, verwenden Sie Anfragen, Graben urllib2 – Wes

Antwort

0

Ok das war lächerlich einfach und ich war über denken dies. Ich finde, dass ich manchmal auf ein viel höheres Niveau schauen kann, als ein Problem wirklich ist und die Taillenzeit. Wie auch immer das ist, wie es funktionieren soll: // docs:

def cli(self,method): 
    self.url = ("http://" + str(self.host) + "/rest//?method=" +str(method)+ "&username=" +str(self.username)+ "&password=" +str(self.password)+ "&enable_password=test&session_id="+str(self.session_id)) 
    data="show ver" 
    try: 
     req = urllib2.Request(self.url) 
     response = urllib2.urlopen(req,data) 
     result = response.read() 
     print result 

    except urllib2.URLError, e: 
     print e.reason 

die CLI-Befehle in dem Puffer gerade platziert sind und nicht verschlüsselten ....

Verwandte Themen