Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi URL aufrufen und POST ausführen (https://www.delphipraxis.net/101133-url-aufrufen-und-post-ausfuehren.html)

delphinia 8. Okt 2007 21:23


URL aufrufen und POST ausführen
 
Hi,

ich habe eine URL, die ich im Browser FF oder IE aufrufen will, und dnan das auf der Seite enthaltende Formular absenden!

Bei GET ist das ja kein Problem gleich die URL mit den entsprechnenden Variablen aufrufen aber bei POST geht das ja nicht also was nun?!

mkinzler 8. Okt 2007 21:48

Re: URL aufrufen und POST ausführen
 
Man könnte das Formular lokal Nachbilden und feste werte an die Zielseite senden

delphinia 9. Okt 2007 20:32

Re: URL aufrufen und POST ausführen
 
hmmm sonst gibt es keine Möglichkeiten?
Das scheint mir als Lösung nicht geeignet

SirThornberry 9. Okt 2007 20:39

Re: URL aufrufen und POST ausführen
 
bist du dir mit der Sparte sicher? Willst du es wirklich mit Delphimitteln erreichen oder willst du es mit dem Browser machen?
Was genau ist das Ziel?

delphinia 9. Okt 2007 20:40

Re: URL aufrufen und POST ausführen
 
Aus meiner Anwendung heruas eine URL aufrufen, deren Formular dann gleich schon ausgeführt wurde...

Die params sind mir bekannt... mittels GET ja auch kein probleme

Cyberbob 9. Okt 2007 20:41

Re: URL aufrufen und POST ausführen
 
du könntest es mit den indy's machen. die mit der komponenten idhttp einfach die entsprechenden get und post viriablen festleen und senden.

delphinia 9. Okt 2007 20:52

Re: URL aufrufen und POST ausführen
 
Aus meiner Anwendung heruas eine URL aufrufen, deren Formular dann gleich schon ausgeführt wurde...

Die params sind mir bekannt... mittels GET ja auch kein probleme



Aber ich habe udn will keinen Browser in meiner Application

Cyberbob 9. Okt 2007 20:55

Re: URL aufrufen und POST ausführen
 
Die Indy's sind kein Browser. Sie enthalten eine Komponente, die dir Hilft, mit dem Internet zu komunizieren, ohne über andere Programme gehen zu müssen!

Lord Shadow 10. Okt 2007 12:28

Re: URL aufrufen und POST ausführen
 
Mittels der idHTTP Komponente kannst du URLS mit Get und Post Daten aufrufen und damit auch gleich Formulare abschicken. Zurückgegeben wird der Quelltext der dann entstandenen Seite. Die Postdaten kannst du genauso in einem String zusammenfassen und mit idHTTP.Post an die URL schicken.

Quelle: www.dsdt.info
Delphi-Quellcode:
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;
Mfg Shadow

mohikaner13 6. Mär 2008 08:59

Re: URL aufrufen und POST ausführen
 
Die Anfrage hat sich erledigt,

ich habe es jetzt doch mit der oben beschriebenen Indy-Komponente gemacht. Der Quelltext hat auf Anhieb aber nicht geklappt, da er in der übergebenen URL hinten immer noch ein "leeres" '&' anfügt. Das wird von dem Webserver meiner Webcam (RoboCam) aber nicht akzeptiert. Ich habe den Code also abgeändert, so dass er kein abschließendes '&' mehr übergibt (vielleicht nicht elegant, aber funktioniert ;-)

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

    Text := copy(lParams.Datastring,0, length(lParams.Datastring)-1);
    lParams.WriteString(Text);

    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);
...
Gruß, Jörg Hemmerling



Erste Anfrage (überholt):

Hallo,

ich suche eine ebensolche Lösung. (Nachdem ich nun das Bild meiner Webcam laden kann, will ich diese auch noch steuern können) Kann man den Post-Befehl nicht auch "einfach" als Text senden - nichts anderes sind doch die Daten, welche über http gesandt werden - oder?

Das müsste dann doch auch mit Delphi-Bordmitteln gehen?

Hat das schon mal jemand gemacht?
Ich werds mal versuchen - welche Daten (Header, Daten, usw) sollte ich ja mit einem sniffer rauskriegen können.

Nur - an welche Schnittstelle sende ich die dann? (Ich vermute mal über netsocks an die IP-Adresse:Port - richtig?)

Danke.


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