![]() |
Datasnap RestServer CRUD POST-Daten
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:
Vielen Dank im voraus.
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} Starsky |
AW: Datasnap RestServer CRUD POST-Daten
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:
Gesendet wurden die Daten über einen RestClient mit folgendem Code:
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)
Delphi-Quellcode:
Warum kommt es zu dieser TDBXError Fehlermeldung?
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; Ausgelöst wird diese Fehlermeldung in der Unit Data.DBXJSONCommon in der Procedure TDBXJSONTools.JSONToDBX. Kann da vielleicht einer einen Tipp geben :-) Gruß Starsky |
AW: Datasnap RestServer CRUD POST-Daten
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.
|
AW: Datasnap RestServer CRUD POST-Daten
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:roll: Aber jetzt funktioniert es...:-D Gruß Starsky |
AW: Datasnap RestServer CRUD POST-Daten
Hallo,
Nachdem ich gerade an einem ähnlichen Fehler nachforsche: Was war bei dir genau das Problem? Grüße, Daniel |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz