Seite 1 von 1
http-request PUT klappt nicht
Verfasst: Samstag 29. Juli 2017, 15:55
von tholle
Hi Leute,
ich wuerde gern via http-call eine Lampe schalten.
Zu Testzwecken setze auf auf der Konsole folgenden Befehl ab:
Code: Alles auswählen
curl - X PUT "http://localhost:8088/api/harmony/lights/15/state" -d "{"on" : "true"}
Das funktionert. Licht wird eingeschaltet.
Das Ganze wuerde ich gern in einem python-skript implementieren, was allerdings nicht klappt.
Code: Alles auswählen
>>> import urllib,requests
>>> requests.put('http://localhost:8088/api/loxone/lights/15/state', data = {'on':'true'})
<Response [200]>
Host wird erfolgreich kontaktiert, aber das Licht schaltet nicht. Ich nehme an, weil der "data"-Parameter nicht richtig uebertragen wird.
Hat jemand eine Idee, wie man das richtig macht.
Den Python-Request habe ich von der REQUESTS-Doku (
http://docs.python-requests.org/en/mast ... -a-request)
Vielen Dank und Gruss,
tholle
Re: http-request PUT klappt nicht
Verfasst: Samstag 29. Juli 2017, 16:37
von Sirius3
@tholle: der PUT-Request erwartet json als Payload:
Code: Alles auswählen
requests.put('http://localhost:8088/api/loxone/lights/15/state', json={'on': 'true'})
Re: http-request PUT klappt nicht
Verfasst: Samstag 29. Juli 2017, 16:48
von tholle
Vielen Dank.
Klappt!
Das steht so aber nicht in der Doku.
Woher weißt du das? Erfahrung wahrscheinlich.
Gruss,
tholle
Re: http-request PUT klappt nicht
Verfasst: Samstag 29. Juli 2017, 17:06
von Sirius3
@tholle: na, wenn der »curl«-Befehl so funktioniert, muß das mit Requests genauso gesendet werden.
Re: http-request PUT klappt nicht
Verfasst: Samstag 29. Juli 2017, 17:15
von tholle
Ja, schon klar.
Aber wo ist fuer einen Anfaenger ersichtlich, dass man als Payload-Parameter "json", statt "data" nehmen muss/kann.
Gruss,
tholle
Re: http-request PUT klappt nicht
Verfasst: Samstag 29. Juli 2017, 17:27
von BlackJack
@tholle: Man muss nicht das `json`-Argument verwenden, man kann auch bei `data` JSON als Argument übergeben. Das es das `json`-Argument gibt, steht im gleichen von Dir verlinkten Quickstart-Dokument, mit Beispiel.
Re: http-request PUT klappt nicht
Verfasst: Sonntag 30. Juli 2017, 08:43
von tholle
@BlackJack,
das war fuer mich so nicht ersichtlich. Als Beispiele wird in Verbindung mit JSON nur die GET und POST-Methonde erwaehnt.
Aber egal, ihr habt mir auf jeden Fall schon gut weiter geholfen und ich habe wieder etwas dazu gelernt.
Vielen Dank nochmal euch beiden!
Gruss,
tholle
Re: http-request PUT klappt nicht
Verfasst: Sonntag 30. Juli 2017, 10:54
von BlackJack
@tholle: Das ist doch wieder etwas anderes als `data` oder `json` als Argument. GET, POST, PUT & Co sind auch unabhängig von Python und `requests`, das ist HTTP, mit dem man sich beschäftigen muss.
Re: http-request PUT klappt nicht
Verfasst: Sonntag 30. Juli 2017, 15:25
von tholle
@Blackjack, ja, ich weiss, dass GET, POST, PUT, DELETE, etc, Teil des HTT-Protokolls sind.
Wollte nur sagen, dass ich in der REQUESTS-Doku das Argument "json" nur in Verbindung mit den HTTP-Methoden GET und POST gesehen habe, nicht mit PUT, weswegen ich gar nicht auf die Idee gekommen bin, "json" als Argument fuer meine Notwendigkeit zu nehmen.
Gruss,
tholle