Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi IdHTTP Server/Client Problem (https://www.delphipraxis.net/185627-idhttp-server-client-problem.html)

sephraina 25. Jun 2015 12:17

IdHTTP Server/Client Problem
 
Hallo,

Ich versuche gerade von meinem Client aus einen Post auf meinen Server zu machen, aber irgendwo stecke ich fest. Der Server hat zwar eine Verbindung zum Client (Get-Request funktioniert) aber meint Post will er nicht anzeigen.

Hier der Client-Code
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);
var s: TMemorystream;
    str: TStringstream;
    a: string;
    p: integer;
begin
      s := Tmemorystream.Create;
      str := TStringstream.Create (edit2.Text);
      showmessage(str.DataString); // wird angezeigt
      s.LoadFromStream(str);

      idhttp1.Post('http://127.0.0.1/' , s);

end;
Und hier mein Servercode:
Delphi-Quellcode:
procedure TFServer.IdHTTPServer1CommandOther(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
  var s: TMemorystream;
  str : TStringstream;
  begin
      Showmessage('POST: connected!'); //wird auch nicht angezeigt
      s:= TMemorystream.Create;
      s.Position := 0;
      str.LoadFromStream(s);
      showmessage(str.DataString);
end;
Da der Server kein 'CommandPost' hat nahm ich das 'CommandOther'
Hmm, ich könnte mir vorstellen dass ich den Inhalt des Streams noch irgendwie holen muss (wie?) aber er müsst nur schon mal mein showmessage() anzeigen...

Hoffe jemand findet den Fehler.
Danke im Voraus! :)

Gruss Seph

BadenPower 25. Jun 2015 12:34

AW: IdHTTP Server/Client Problem
 
Zitat:

Zitat von sephraina (Beitrag 1306579)
Da der Server kein 'CommandPost' hat nahm ich das 'CommandOther'

'OnCommandGet' wird ausgelöst bei GET, POST und HEADER.

sephraina 25. Jun 2015 13:01

AW: IdHTTP Server/Client Problem
 
Danke, das erklärt einiges.
Aber wie mache ich jetzt den Unterschied zwischen Get und Post?
-Ich schicke ja den Stream mit http.post()?
Ist das im 'Acontext: tidcontext' ?? irgendwie so?
Delphi-Quellcode:
if Acontext = 'Get' then showmessage('get') else if Acontext = 'post' then showmessage('post');
aber das sind ja andere Typen...

BadenPower 25. Jun 2015 13:25

AW: IdHTTP Server/Client Problem
 
Zitat:

Zitat von sephraina (Beitrag 1306586)
Danke, das erklärt einiges.
Aber wie mache ich jetzt den Unterschied zwischen Get und Post?

ARequestInfo.Command gibt Dir diese Möglichkeit.

In der Event-Funktion hast Du als Parameter die Variable "ARequestInfo: TIdHTTPRequestInfo".

TIdHTTPRequestInfo hat wiederum die Property "Command" welche Dir einen String liefert.

Dieser String lautet dann "GET", "POST", oder "HEAD", je nachdem was Du ausgeführt hast.

sephraina 25. Jun 2015 14:30

AW: IdHTTP Server/Client Problem
 
Danke, Problem gelöst :-D

Habe jetzt mein
Delphi-Quellcode:
procedure TFServer.IdHTTPServer1CommandGet(AContext: TIdContext;
  ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo);
mit der Abfrage ergänzt:
Delphi-Quellcode:
if ARequestInfo.Command ='GET' then
    begin //irgendwas
    end;
else if ARequestInfo.Command ='POST' then
    begin //irgendwas
    end;

joehd 28. Dez 2022 17:47

AW: IdHTTP Server/Client Problem
 
Hallo wie genau hast du die dann den Stream geholt ? Ich bin auch gerade an sowas drann...

himitsu 28. Dez 2022 21:16

AW: IdHTTP Server/Client Problem
 
Schau mal in das rein, was dort Request und Response im Namen hat. (Post vorher)

joehd 29. Dez 2022 09:03

AW: IdHTTP Server/Client Problem
 
Ich habe vorher mit einer TCP Komponente gearbeitet das ging bis lang aber jetzt habe ich mich überzeugen lassen umzudenken :-) Da war es einfach da gab es ein send ;-) jetzt gibt es Tausend Möglichkeiten.
wenn das läuft werde ich auf jeden Fall hier ein Beispiel reinsetzen ... Das der nächste nicht wieder alles suchen muss ... Ich dachte die idHTTp gibt die Standardantworten selbst

Ich muss ja wohl auf jedes Request reagieren, mit der richtigen Response.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:38 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