Hi,
ich experimentiere gerade ein wenig mit REST und stoße dabei auf folgendes Problem:
Fehlermeldung:
Code:
Im Projekt XYZ.exe ist eine
Exception der Klasse EEncodingError mit der Meldung "Keine Zuordnung für
Unicode-Zeichen in der Multibyte-Zielcodeseite vorhanden" aufgetreten.
Server und Client laufen auf dem gleichen System. Kann mir einer sagen, woher dieser Fehler kommt, bzw. was ich falsch mache? (Delphi-Version 10.1)
Servermethode:
Delphi-Quellcode:
var
a: TJSONArray;
o: TJSONObject;
MATKatList: TKategorieList;
I: Integer;
s:
string;
begin
MATKatList:=TKategorieList.Create;
try
MATKatList.LoadFromDB;
a:=TJSONArray.Create;
try
for I := 0
to MATKatList.Count-1
do
begin
o:=TJSONObject.Create;
o.AddPair('
Lfdnr', TJSONNumber.Create(MATKatList[i].Lfdnr));
o.AddPair('
Guid', MATKatList[i].guid);
o.AddPair('
Kategorie', MATKatList[i].Kategorie);
a.AddElement(o);
end;
finally
Response.ContentType:='
application/json';
s:=a.ToString;
Response.Content:=s;
a.DisposeOf;
end;
finally
MATKatList.Free;
end;
Client-Methode: Hier tritt im RestRequest.Execute der Fehler auf.
Delphi-Quellcode:
var
a: TJSONArray;
o: TJSONValue;
begin
RESTClient1.BaseURL:='
http://'+hostname+'
:'+port;
RESTRequest1.Resource:='
getMATKat';
RESTRequest1.Method:=TRESTRequestMethod.rmGet;
RESTRequest1.Response:=frm_ClientMain.RESTResponse1;
RESTRequest1.Params.Clear;
RESTRequest1.Execute;
//<---Hier tritt die Exception auf.
if RESTResponse1.Content<>'
'
then
begin
con1.ExecSQL('
Delete from MatKat');
qry.SQL.Text:='
Insert into MatKat (lfdnr, Guid, Kategorie) VALUES (:lfdnr, :guid, :kategorie)';
a:=TJSONObject.ParseJSONValue(TEncoding.ASCII.GetBytes(RESTResponse1.Content), 0)
as TJSONArray;
for o
in a
do
begin
qry.Params.ParamValues['
lfdnr']:=Integer(TJSONObject(o).GetValue('
Lfdnr').ToString);
qry.Params.ParamValues['
guid']:=TJSONObject(o).GetValue('
Guid').ToString;
qry.Params.ParamValues['
kategorie']:=TJSONObject(o).GetValue('
Kategorie').ToString;
qry.ExecSQL;
end;
a.DisposeOf;
end;