Einzelnen Beitrag anzeigen

Benutzerbild von Captnemo
Captnemo

Registriert seit: 27. Jan 2003
Ort: Bodenwerder
1.126 Beiträge
 
Delphi XE4 Architect
 
#1

EEncodingError bei RestRequest.Execute

  Alt 9. Jan 2017, 14:25
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;
Dieter
9 von 10 Stimmen in meinem Kopf sagen ich bin nicht verrückt. Die 10. summt dazu die Melodie von Supermario Bros.
MfG Captnemo
  Mit Zitat antworten Zitat