![]() |
Einfacher Webserver... Wo finde ich das übergebene JSON
Hallo Zusammen,
ich muss für eine relativ einfache Kommunikation mit einen Webserver bauen. Ein Externer Server schickt mir per POST ein JSON. Der Event kommt und ich bekomme in der IdHTTPServer1CommandGet soweit alles- außer: das JSON was mir mitgeschickt wurde ist unauffindbar...
Code:
So der Code den ich gefunden habe. Leider ist S immer leer! Hat jemand einen Tip wo ich die Daten finden kann?
procedure TAct.IdHTTPServer1CommandGet(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
var Stream : TStream; S : string; begin If ARequestInfo.CommandType = hcPOST then begin Stream := ARequestInfo.PostStream; if Assigned(Stream) then begin Stream.Position := 0; S := ReadStringFromStream(Stream); TThread.Synchronize(nil, procedure begin memo1.Lines.Add(S); end); end end; end; procedure TAct.IdHTTPServer1CreatePostStream(AContext: TIdContext; AHeaders: TIdHeaderList; var VPostStream: TStream); begin VPostStream := TMemoryStream.Create; end; procedure TAct.IdHTTPServer1DoneWithPostStream(AContext: TIdContext; ARequestInfo: TIdHTTPRequestInfo; var VCanFree: Boolean); begin VCanFree := false; end; Der PostStream scheint nicht leer zu sein, zumindest ist er immer zugewiesen. Vielen Dank! Delphi 11 / Indy 10 |
AW: Einfacher Webserver... Wo finde ich das übergebene JSON
Doch, genau so machen wir das auch.
Du hast doch einen Debugger. Steht im
Delphi-Quellcode:
wirklich nichts drin? Was macht diese ominöse
PostStream
Delphi-Quellcode:
?
ReadStringFromStream(..)
Ich nehme einfach einen
Delphi-Quellcode:
, sage
System.Classes.TStreamReader
Delphi-Quellcode:
und habe meinen String, der dann halt noch in ein Json-Objekt umgewandelt werden muss...
ReadToEnd()
PS: Im RAD Studio gibt es unter Tools -> REST-Debugger ein Standalone-Tool zum Testen. Das ist zwar nicht ganz das Gelbe vom Ei, aber echt schon mal besser als nichts. |
AW: Einfacher Webserver... Wo finde ich das übergebene JSON
Hallo "Der schöne Günther" :-D
Perfekt. Du hast mich auf den korrekten Weg gebracht. Die Funktion hatte ich im Web im Zusammenhang mit Webserver und Daten gefunden. Vielleicht was Altes. Mit dem StreamReader klappts wunderbar Danke schön! |
AW: Einfacher Webserver... Wo finde ich das übergebene JSON
Hallo,
prinzipell besteht ein WebServer Request und Response aus zwei Teilen: - einen Header (in dem Daten "über" das Objekt stehen - zum Beispiel auch die größe des Bodies(Streams) - und einen Body (in dem dann die Daten "des" Objektes stehen - getrennt von \r\n) der Body wiederum kann sich in mehrere Teile teilen, wenn Du zum Beispiel plain/raw Daten mit enkodierten Daten sendest oder empfängst. Das ist dann abhängig/gekennzeichnet durch den im Header stehenden Mime-Typ. Der Mime-Typ ist sowas wie eine Beschreibung des Inhalts, was die Response enthält. Zum Beispiel: html/text oder: json/text. Für eine genaue Erklärung empfehle ich Dir die RFC (Request For Call) zu den jeweiligen Protokoll zu den Server-Typ (hier HTML Protokoll) unter Benutzung von google zu suchen. Mit freundlichen Grüßen Jens |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 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