Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Internet / LAN / ASP.NET (https://www.delphipraxis.net/23-library-internet-lan-asp-net/)
-   -   Delphi Post-Daten (https://www.delphipraxis.net/52780-post-daten.html)

jakobwenzel 3. Sep 2005 15:45


Post-Daten
 
Post-Daten werden normalerweise dafür genutzt, Daten aus HTML-Formularen an bearbeitende PHP- oder CGI-Sckripte zu senden. Mit den Indy-Komponenten lassen sich solche Formulare imitieren. Dadurch lässt sich ein solches Formular direkt in die Anwendung integrieren. Aber auch zum Datenaustausch mit einem solchen Skript kann die Funktion genutzt werden.
Die benötigte Funktionalität wird von der Komponente TidHTTP zur Verfügung gestellt.

Folgende Komponenten werden auf dem Test-Formular benötigt:
(Das Test-Formular soll ein einfaches Konakt-Formular darstellen)
  • Eine Edit-Komponente EMailEdit (für die E-Mail-Adresse)
  • Eine Memo-Komponente TextMemo (für den Text)
  • Noch eine Memo-Komponente ResponseMemo (für den zurückgegebenen Text)
  • Eine TidHTTP-Komponente IdHTTP
  • Und eine Button Komponente SendButton (zum Senden)

Außer den Namen können alle Standardeigenschaften der Elemente so belassen werdne

In die Ereignisbehandlung OnClick des Buttons muss jetzt geschrieben werden:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  PostStrings: TStringList;   //Zusammengesetze Post-Daten
  ResponseStream:TStringStream;//Ausgabe der Aufgerufenen Seite
  ausgabe:String;             //Ausgabe der aufgerufenen Seite als String
  zeile:String;               //Zum zeilenweisen Ausgeben der Rückgabe der Aufgerufenen Seite benutzte Zwischenvariable
  i:Integer;                  //Zähler für die For-Schleife
begin
  Stream:=TStringStream.Create('');//Rückgabe-Stream erstellen
  Strings := TStringList.Create;  //Post-Daten-StringList erstellen
  try
    Strings.Add('EMail='+EMailEdit.Text);   //Post-Daten in die StringList eintragen
    Strings.Add('Text='+TextMemo.Lines.Text);
    try
      idHTTP.Post('http://deineSeite.de/DeineDatei.php', Strings,stream);//Datei abrufen
      ausgabe:=Stream.DataString; //Ausbage-Sring die zurückgegebenen Daten zuweisen
      zeile:=''; //Zwischenvariable leeren
      for i:=1 to Length(ausgabe) do begin //For-Schleife zum formatieren der Ausgabe (Zeilenumbrüche korrekt darstellen)
        if (ausgabe[i]=#13) and (ausgabe[i+1]=#10) then begin //Bei Zeilenumbruch
          ResponseMemo.Lines.Add(zeile);
          zeile:='';
        end else if s[i]<>#10 Then zeile:=zeile+ausgabe[i];
      end;
      ResponseMemo.Lines.Add(steil);
    except //Fehlerbehandlung
     on E: Exception do
       showmessage('Error encountered during POST: ' + E.Message);
    end;
  finally
    Strings.Free;
    Stream.Free;
  end;
end;
Zum Abschluss noch ein Beispiel für eine bearbeitende PHP-Seite: (die Anfrage würde normalerweise noch irgendwo abgespeichert werden, darauf habe ich hier verzichtet, die Post-Daten werden lediglich formatiert zurückgegeben)

Code:
<?php
echo 'E-Mail: '.$_POST["EMail"]; //Ausgeben der E-Mail-Adresse
echo Chr(13).Chr(10); //Zeilenumbruch
echo 'Text: '.$_POST["Text"];
?>
Bitte beachten: Php-Seiten müssen immer über einen (lokalen) Web-Server aufgerufen werden, damit sie interpretiert werden.


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