Danke für die Anregung, das nochmal zu testen. Der Fehler ist jetzt etwas schwieriger nachzuvollziehen als wahrscheinlich im ursprünglichen Bug-Report vom August. Er tritt jetzt nur noch auf, wenn man den Parameter selbst in die
URL mit reinschreibt und nicht mehr, wenn man ihn per "AddParameter" setzt. In D11.2 funktionierten allerdings beide Wege völlig fehlerlos und so sollte es auch weiterhin sein. Es gibt ja diverse Gründe, warum es mal vorkommen kann, dass man nicht AddParameter nutzt, sondern die
URL selbst zusammensetzt - in REST-APIs könnte es auch eine durch einen Call vorgegebene
URL sein, um weitere Ergebnisse abzurufen (macht die Graph
API von Microsoft zum Beispiel). Wäre blöd, wenn Delphi da reingrätscht.
Aber klar, so fällt der Fehler weniger auf.
Beispielprogramm:
Delphi-Quellcode:
program restSpace;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils, REST.Client;
var
myRest: TRESTClient;
myQuery: TRESTRequest;
resultText:
string;
begin
myRest:=TRESTClient.Create('
https://httpbin.org/');
myQuery:=TRESTRequest.Create(
nil);
myQuery.Client:=myRest;
try
{ TODO -oUser -cConsole Main : Code hier einfügen }
myQuery.Resource:='
get?param=hello world';
myQuery.AddParameter('
param_added','
hello world');
myQuery.Execute;
if (myQuery.Response.StatusCode=200)
and (myQuery.Response.JSONValue<>
nil)
then begin
resultText:=myQuery.Response.JSONValue.GetValue<
string>('
args.param','
!! Not found !!');
Writeln(resultText);
resultText:=myQuery.Response.JSONValue.GetValue<
string>('
args.param_added','
!! Not found !!');
Writeln(resultText);
Readln;
end;
except
on E:
Exception do
Writeln(E.ClassName, '
: ', E.
Message);
end;
myQuery.Free;
myRest.Free;
end.
Ausgabe mit D11.2:
Ausgabe mit D12:
Code:
hello%20world
hello world
Tja, wie vorgehen?