bumaas
30. Januar 2016 um 20:11
1
Hallo,
ich versuche aus einem Java Programm heraus auf IPS 3.4 zuzugreifen. Dabei erhalte ich aber immer einen ‚Parse Error‘.
Den gleichen Fehler erhalte ich wenn ich den Aufruf über curl versuche:
curl --data-binary "{\"jsonrpc\": \"2.0\", \"id\":\"1\", \"method\": \"SetValueString\", \"params\": [24623, \"abc\"] }" http://nuc:82/api/
Es kommt sowohl über JAVA als auch über Curl das Ergebis:
{"id":null,"error":{"message":"Parse error","code":"-32700"},"jsonrpc":"2.0"}
Hat jemand eine Idee, woran es liegen könnte? Oder ein gutes Beispiel wie es geht?
Viele Grüße
Burkhard
jevico
31. Januar 2016 um 00:10
2
Hallo Burkhard.
Versuch mal als Request Id null zu übergeben.
Grüße
Vitali
paresy
31. Januar 2016 um 10:40
3
Versuch mal den Content-Type auf application/json zu setzen.
paresy
bumaas
31. Januar 2016 um 17:14
4
Besten Dank für eure Unterstützung!
Nun bin ich einen Schritt weiter, stehe aber schon vor dem nächsten Hindernis:rolleyes:
Der um den Content-Type erweiterte curl Aufruf
curl -H "Content-Type: application/json" --data-binary "{\"jsonrpc\": \"2.0\", \"id\":\"0\", \"method\": \"SetValueString\", \"params\": [24623, \"abc\"] }" http://nuc:82/api/
liefert nun die Fehlermeldung
{"id":"0","error":{"message":"Invalid Username\/Password for remote access!","code":"-32501"},"jsonrpc":"2.0"}
Also fehlt es nun noch an der Autorisierung. Versuche ich es mit http://<user>:<password>@nuc:82/api/ dann klappt es nicht, weil mein user ein ‚@‘ beinhaltet.
Gibt es eine andere Möglichkeit, die Autorisierungsdaten zu setzen?
Viele Grüße
Burkhard
paresy
31. Januar 2016 um 19:24
5
Jupp. Sende einen weiteren Header. Mit Authorization und dem Base64 kodiertem Benutzername+Kennwort.
paresy
bumaas
1. Februar 2016 um 12:57
6
Super, nun geht es!
Mein Beispiel
curl -H "Content-Type: application/json" -H "Authorization: Basic YnVyaxxxxxxxxxxxxxxxxxxxx=" --data-binary "{\"jsonrpc\": \"2.0\", \"id\":\"0\", \"method\": \"IPS_LogMessage\", \"params\": [\"curl\",\"Hello IPS\"] }" http://nuc:82/api/
liefert nun das Ergebnis:
{"result":false,"id":"0","jsonrpc":"2.0"}
Und im Logfile findet man „Hello IPS“.
Nicht wundern, dass ‚result == false‘ ist. Das ist wohl noch ein Fehler in IPS:)
Viele Grüße
Burkhard