Seite 1 von 1

Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 12:46
von kai-schweizer
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...

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 13:22
von BlackJack
@kai-schweizer: Schau Dir mal das `requests`-Modul an: http://docs.python-requests.org

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 13:51
von kai-schweizer
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...

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 14:40
von /me
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.

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 14:56
von 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)

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 15:06
von kai-schweizer
Oh, vielen vielen Dank! :)
Es hat endlich geklapp!

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

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 16:45
von BlackJack
@kai-schweizer: Schrieb ich doch schon: Die Antwort hat eine `json()`-Methode.

Re: Zugriff auf einfache API implementieren... Wie?

Verfasst: Donnerstag 31. Januar 2013, 16:56
von kai-schweizer
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!