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