Zugriff auf einfache API implementieren... Wie?

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
kai-schweizer
User
Beiträge: 4
Registriert: Donnerstag 31. Januar 2013, 12:36

Ich habe eine URL hinter der eine einfach API steckt:

http://example.de/create.json

Folgendes soll an die API via POST übermittelt werden:
-text
-url
-username

Der curl-Befehl sieht so aus:

Code: Alles auswählen

curl --data-urlencode "text=Beispieltext" -d "url=http://google.de" -d "username=User1" http://example.de/create.json
Genau das möchte ich in implementieren. Ich möchte die Daten innerhalb von dem Programm an die API übergeben und anschliessend damit arbeiten.
Ich bin jetzt total überfordert. Ich hab so viel gelesen/ausprobiert (pycurl, urllib2, subproces,...) und mittlerweile verstehe ich gar nichts mehr :D

Wie würdet ihr das angehen? Habt ihr sowas schonmal gemacht?
Ich brauche echt Hilfe. Alleine komme ich jetzt nicht mehr weiter...
BlackJack

@kai-schweizer: Schau Dir mal das `requests`-Modul an: http://docs.python-requests.org
kai-schweizer
User
Beiträge: 4
Registriert: Donnerstag 31. Januar 2013, 12:36

Danke, Requests sieht sehr interessant aus!

Ich hab aber wieder ein Problem...

Wie in der Dokumentation hab ich mal ein Beispiel erstellt:

Code: Alles auswählen

payload = {'text': reply, 'name': varname, 'avatar': varavatar}
r = requests.get('http://example.de/create.json', params=payload)
Wenn ich mir dann mit

Code: Alles auswählen

print r.text
die Antwort ausgeben lassen will bekomme ich nur Error von der API:

Code: Alles auswählen

{"result": "error", "error": "error_no_direct_connection"}
Woran kann das liegen?



Edit:
Wenn ich mir mit

Code: Alles auswählen

r. url
die URL anzeigen lasse sieht die ungefähr so aus:

Code: Alles auswählen

http://example.de/create.json?text=Test&name=XXXXXX&avatar=http%3A%2F%2Fa0.example.de%2FXXXXXnormal.png
Hab versucht dran rumzuspielen, was ich daran ändern muss, um im Browser ein Ergebnis zu bekommen, hat aber nichts gebracht bisher...
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

kai-schweizer hat geschrieben:Woran kann das liegen?
Mit --data bei curl erzeugst IIRC du einen POST-Request.

Du solltest requests.post statt requests.get verwenden.
BlackJack

@kai-schweizer: Du hast im Eingangsbeitrag doch selbst schon gesagt, dass Du via POST übermitteln willst/musst. :P

Die Antwort-Objekte haben übrigens auch eine `json()`-Methode. Sehr praktisch wenn man JSON als Antwort bekommt. 8)
kai-schweizer
User
Beiträge: 4
Registriert: Donnerstag 31. Januar 2013, 12:36

Oh, vielen vielen Dank! :)
Es hat endlich geklapp!

Jetzt muss ich nur noch rausfinden, wie ich einzelne Parameter aus der Antwort herausbekomme.
BlackJack

@kai-schweizer: Schrieb ich doch schon: Die Antwort hat eine `json()`-Methode.
kai-schweizer
User
Beiträge: 4
Registriert: Donnerstag 31. Januar 2013, 12:36

Ja, ich weiss... Hab erst vor ein paar Tagen mit Python angefangen. Habs gelesen aber musste erst ausprobieren, wie das geht.
Jetzt läuft alles! :)
Also vielen Dank nochmal!
Antworten