AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Datasnap RestServer CRUD POST-Daten
Thema durchsuchen
Ansicht
Themen-Optionen

Datasnap RestServer CRUD POST-Daten

Ein Thema von Starsky911 · begonnen am 14. Apr 2015 · letzter Beitrag vom 22. Jun 2018
Antwort Antwort
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#1

Datasnap RestServer CRUD POST-Daten

  Alt 14. Apr 2015, 16:05
Ich versuche mit Javascript (ExtJS) auf einen RestServer zuzugreifen.
Das Daten laden funktioniert soweit mit der Funktion "GetKundeListe".
Das routen auf die entsprechenden Änderungsfunktionen funktioniert
auch z.B. das löschen über die Funktion "cancelGetKundeListe".

Das routen beim Update auf die Funktion "acceptGetKundeListe"
und das setzen des Schlüssels "kdid" funktioniert auch.
Das Problem ist das die Änderungsdaten die als JSON-Format als
PUT geliefert werden nicht an die Funktion über "jObject"
weitergegeben werden.
Kann mir da einer weiterhelfen?

Delphi-Quellcode:
type
{$METHODINFO ON}
  TServerMethods1 = class(TDataModule)
    FDConnection1: TFDConnection;
    FDQuery1: TFDQuery;
    FDPhysODBCDriverLink1: TFDPhysODBCDriverLink;
    procedure DataModuleCreate(Sender: TObject);
  private
    function ToJSONData(ads: TDataSet): TJSONArray;
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    function EchoString(Value: string): string;
    function ReverseString(Value: string): string;
    function GetKundeListe(kdid: string): TJSONObject;
    procedure cancelGetKundeListe(kdid: string): string;
    procedure acceptGetKundeListe(kdid: string; jObject: TJSONObject);

  end;
{$METHODINFO OFF}
Vielen Dank im voraus.
Starsky
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Datasnap RestServer CRUD POST-Daten

  Alt 16. Apr 2015, 08:14
Hallo,

ich bin in der Sache etwas weiter gekommen.
Zumindest kommen die Daten die über PUT gesendet werden beim RestServer an.
Es kommt dann allerdings zu folgenden Fehlermeldung:

Delphi-Quellcode:
Thread-Start: Thread-ID: 2956. Prozess WebRestServer.exe (380)
Modul laden: dhcpcsvc.DLL. Ohne Debug-Infos. Basisadresse: $74AE0000. Prozess WebRestServer.exe (380)
Modul laden: dhcpcsvc6.DLL. Ohne Debug-Infos. Basisadresse: $74AD0000. Prozess WebRestServer.exe (380)
Erste Gelegenheit für Exception bei $7667B727. Exception-Klasse TDBXError mit Meldung 'JSON-Werteingabe {"vip":true,"age":33,"telephones":["000000000","111111111111"],"adresses":[{"adress":"blabla","pc":57000,"city":"Metz"},{"adress":"blabla","pc":44000,"city":"Nantes"}],"size":1.83,"name":"Henri Gourvest"} kann nicht in TDBXTypes.WideString konvertiert werden'. Prozess WebRestServer.exe (380)
Gesendet wurden die Daten über einen RestClient mit folgendem Code:
Delphi-Quellcode:
  lJSO := SO(Memo2.Lines.Text);
  lRequest := TStringStream.Create(lJSO.AsString, TEncoding.UTF8);
  try
    IdHTTP1.Request.ContentType := 'text/xml; charset=utf-8';//'text/plain;charset=UTF-8';
    IdHTTP1.Request.Accept := 'application/json';
    IdHTTP1.Request.Charset := 'utf-8';
    try
      lResponse := IdHTTP1.Put(Edit1.Text, lRequest);
      Memo1.Lines.Text:=lResponse;
    except
      on E: Exception do
        ShowMessage('Error on request:'#13#10 + E.Message);
    end;
  finally
    lRequest.Free;
  end;
Warum kommt es zu dieser TDBXError Fehlermeldung?
Ausgelöst wird diese Fehlermeldung in der Unit Data.DBXJSONCommon
in der Procedure TDBXJSONTools.JSONToDBX.
Kann da vielleicht einer einen Tipp geben

Gruß
Starsky
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

AW: Datasnap RestServer CRUD POST-Daten

  Alt 16. Apr 2015, 11:25
Zur Fehlereinkreisung würde ich einen Wireshark oder Fiddler Mitschnitt der HTTP Kommunikation bei dem PUT und bei einem funktionierenden Fall, z.B. POST, erstellen, und dann beide auf Unterschiede prüfen.
Michael Justin
  Mit Zitat antworten Zitat
Starsky911

Registriert seit: 8. Feb 2008
Ort: Bremen
96 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Datasnap RestServer CRUD POST-Daten

  Alt 17. Apr 2015, 09:48
Ich habe den Fehler gefunden.
Es lag nicht an den JSON PUT-Parameter sondern
an den URL Parameter der nicht richtig gesetzt war.
Sehr irreführende Fehlermeldung
Aber jetzt funktioniert es...

Gruß
Starsky
  Mit Zitat antworten Zitat
Benutzerbild von Sanchez
Sanchez

Registriert seit: 24. Apr 2003
Ort: Neumarkt Stmk
892 Beiträge
 
Delphi XE6 Enterprise
 
#5

AW: Datasnap RestServer CRUD POST-Daten

  Alt 22. Jun 2018, 11:31
Hallo,

Nachdem ich gerade an einem ähnlichen Fehler nachforsche: Was war bei dir genau das Problem?

Grüße,
Daniel
Daniel
Testen ist feige!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz