AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Einfacher Webserver... Wo finde ich das übergebene JSON
Thema durchsuchen
Ansicht
Themen-Optionen

Einfacher Webserver... Wo finde ich das übergebene JSON

Ein Thema von Supergr · begonnen am 30. Nov 2023 · letzter Beitrag vom 12. Dez 2023
Antwort Antwort
Supergr

Registriert seit: 8. Feb 2012
12 Beiträge
 
#1

Einfacher Webserver... Wo finde ich das übergebene JSON

  Alt 30. Nov 2023, 11:59
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:
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;
So der Code den ich gefunden habe. Leider ist S immer leer! Hat jemand einen Tip wo ich die Daten finden kann?
Der PostStream scheint nicht leer zu sein, zumindest ist er immer zugewiesen.

Vielen Dank!

Delphi 11 / Indy 10
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.155 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Einfacher Webserver... Wo finde ich das übergebene JSON

  Alt 30. Nov 2023, 12:23
Doch, genau so machen wir das auch.

Du hast doch einen Debugger. Steht im PostStream wirklich nichts drin? Was macht diese ominöse ReadStringFromStream(..) ?

Ich nehme einfach einen System.Classes.TStreamReader , sage ReadToEnd() und habe meinen String, der dann halt noch in ein Json-Objekt umgewandelt werden muss...

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.
  Mit Zitat antworten Zitat
Supergr

Registriert seit: 8. Feb 2012
12 Beiträge
 
#3

AW: Einfacher Webserver... Wo finde ich das übergebene JSON

  Alt 30. Nov 2023, 12:47
Hallo "Der schöne Günther"

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!
  Mit Zitat antworten Zitat
Benutzerbild von paule32.jk
paule32.jk

Registriert seit: 24. Sep 2022
Ort: Planet Erde
356 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Einfacher Webserver... Wo finde ich das übergebene JSON

  Alt 12. Dez 2023, 08:40
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
Frag doch einfach
Alles was nicht programmiert werden kann, wird gelötet
  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 05:03 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