Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Problem: per POST senden (https://www.delphipraxis.net/81732-problem-per-post-senden.html)

bonanza 2. Dez 2006 21:28


Problem: per POST senden
 
Hallo,

ich habe mir ausm internet (dsdt.info) hier die sachen rausgesucht, die ich benötige:
unzwar soll dieses programm sozusagen als proxy (zusammen mit einem script auf einem server) funktionieren.
der server ist im moment nur zu testzwecken nicht kommerziell.
Allerdings bekomme ich nie etwas zurückgeliefert vom script, an das ich die daten sende.

Wenn man aber manuell an das script den befehlt sendet z.b. so:
TEST dann funktioniert das.

wo ist der fehler ? ;)

wäre für eure hilfe sehr dankbar

Delphi-Quellcode:
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
  sl: TStringList;
  ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do
   Application.ProcessMessages;

  if Assigned(WebBrowser.Document) then
  begin
    sl := TStringList.Create;
    try
      ms := TMemoryStream.Create;
      try
        sl.Text := HTMLCode;
        sl.SaveToStream(ms);
        ms.Seek(0, 0);
        (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
      finally
        ms.Free;
      end;
    finally
      sl.Free;
    end;
  end;
end;

function SendPostData(Ahttp: TIdHTTP; const AtoURL: String; const aParams: TStrings): String;
  //Ahttp: Die HTTP Komponente von Indy 8.0 bzw. 9.0
  //AtoURL: An diese URL werden die Informationen gesendet
  //Result: HTML-Ergebnis (Antwort des Scripts)
Var
  lStream: TMemoryStream; //HTML-Result des PHP-Scripts
  lParams: TStringStream;
  I: Integer;
begin
  Result:='';
  if not Assigned(aHttp) then
    exit;
  lStream := TMemoryStream.create;
  lParams := TStringStream.create('');
  try
    AHTTP.Request.ContentType := 'application/x-www-form-urlencoded';

    //Dieser Stream wird letztendlich gesendet
    //Stream mit Werten füllen
    for I:=0 to aParams.Count-1 do
      lParams.WriteString(aParams[I] + '&');

    try
      //Stream an das PHP-Script senden
      AHTTP.Post(AtoURL,
                 lParams,
                 lStream);
    except
      on E: Exception do
        showmessage('Fehler bei der Übertragung: ' + E.Message);
    end;
    SetLength(Result,lStream.Size);
    lStream.Position:=0;
    lStream.ReadBuffer(Result[1],lStream.Size);
  finally
    lParams.Free;
    lStream.Free;
  end;
end;

procedure TForm1.suche_btClick(Sender: TObject);
 var
  sList: TStringlist;
begin

  sList:=TStringList.Create;
  try
    sList.Add('url=http://www.'+url.text);


      WB_loadhtml(Webbrowser1, SendPostData(idHttp1,'http://hermei4.100webspace.net/index.php',sList));
  finally
    sList.Free;
  end;
end;

marabu 3. Dez 2006 09:58

Re: Problem: per POST senden
 
Guten Morgen,

der Unterschied zwischen dem manuellen und deinem programmierten Abruf ist einfach der, dass du im manuellen Fall ein HTTP GET ausführst und im Programm ein HTTP POST. Um alle möglichen Fälle korrekt zu behandeln wirst du wohl ein weinig mit phpInfo() debuggen müssen.

Grüße vom marabu

bonanza 3. Dez 2006 10:30

Re: Problem: per POST senden
 
gibt es denn keine andere komponente, die ein GET zur verfügung stellt ? was müsste ich denn in der phpinfo ändern ?
ich hab ansich von PHP 0 ahnung :roll:

SirThornberry 3. Dez 2006 10:32

Re: Problem: per POST senden
 
Die Indy-Komponente bietet doch auch Get an du musst es nur verwenden und nicht wie derzeit post.


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