Einzelnen Beitrag anzeigen

Crocotronic

Registriert seit: 9. Mai 2013
258 Beiträge
 
#1

JSON mit Indy verschicken -> Fehler

  Alt 20. Feb 2015, 13:55
Hallo,
ich scheitere zurzeit am Verschicken eines JSON-Objekts. Die Schnittstele ist hierbei JSON-RPC und die Verbindung wird verschlüsselt.
Mein Code zum wegschicken sieht folgendermaßen aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var sl: TStringList;
begin
 sl:= TStringList.Create;
 sl.Text:= '{"id":"ID","method":"authenticate","params":{"user":"USER","password":"PASSWORD"},"jsonrpc":"2.0"}';

 IdHTTP1.IOHandler:= IdSSLIOHandlerSocketOpenSSL1;

 IdHTTP1.Request.ContentType:= 'application/json-rpc';
 IdHTTP1.Request.Connection:= 'Keep-Alive';
 IdHTTP1.Request.ContentLength:= Length(sl.Text)* SizeOf(Char);
 IdHTTP1.Request.ContentEncoding := 'utf-8';

 showmessage(IdHTTP1.Post('https://www.test.de/jsonrpc.do', sl, IndyTextEncoding(encUTF8)));

 sl.Free;
end;
Als Antwort bekomme ich jedesmal:
Code:
{"jsonrpc":"2.0","id":null,"error":{"code":-32700,"message":"Parse error: Unexpected character ('%' (code 37)): expected a valid value (number, String, array, object, 'true', 'false' or 'null')\n at [Source: org.apache.catalina.connector.CoyoteInputStream@2bcf7275; line: 1, column: 2]"}}
Es sieht so aus, als würde Indy irgendwo ein '%' in den Request basteln.
Ich habe herausgefunden, dass sobald aber am Anfang ein Sonderzeichen steht, wie z.B. '{', '"' oder '&', antwortet mir der Server mit der oben beschriebenen Nachricht, dass unerwarteterweise ein '%' gefunden wurde.
Ich hätte ja sofort gedacht, dass da die Zeichensätze nicht übereinstimmen, aber in der Post-Funktion gebe ich ja explizit den UTF-8-Encoder mit.

Ich hoffe, es kann mir jemand helfen!

Viele Grüße
Croco

Geändert von Crocotronic (20. Feb 2015 um 14:02 Uhr)
  Mit Zitat antworten Zitat