'Parse Error' (32700) bei JSON Zugriff

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

Hallo Burkhard.

Versuch mal als Request Id null zu übergeben.

Grüße

Vitali

Versuch mal den Content-Type auf application/json zu setzen.

paresy

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.:frowning:

Gibt es eine andere Möglichkeit, die Autorisierungsdaten zu setzen?

Viele Grüße

Burkhard

Jupp. Sende einen weiteren Header. Mit Authorization und dem Base64 kodiertem Benutzername+Kennwort.

paresy

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“. :loveips:

Nicht wundern, dass ‚result == false‘ ist. Das ist wohl noch ein Fehler in IPS:)

Viele Grüße

Burkhard