![]() |
Indy + Website
Ich wollte fragen, wie ich mithilfe von indy mit einer homepage arbeiten kann,
zB dass das programm edit felder einer website ausfüllt und danach auf einen button klickt, ohne dass jetzt die website offen muss sein und wie man das programm buttons auf einer website klicken lässt wenn diese nicht offen ist ? danke im vorraus mfg |
Re: Indy + Website
Zitat:
XML-Code:
sowie die Namen bzw. IDs der Eingabefelder und Buttons. Der Rest ist dann einfach:
<form action="" method="">
Delphi-Quellcode:
var
http: TIdHTTP; s: String; Params: TStrings; begin http := TIdHTTP.Create(nil); try //wenn die Übertragungsmethode GET ist: s := http.Get('http://seite.de/datei.php?feld1=bla&feld2=blubb'); //wenn die Übertragungsmethode POST ist Params := TStringList.Create; try Params.add('feld1=bla'); Params.Add('feld2=blubb'); s := http.Post('http://seite.de/datei.php', Params); finally Params.free; end; ShowMessage(s); //Zeigt den Quellcode der Eregbnis- / Login- / oder sonstwas - Seite an finally http.free; end; end; |
Re: Indy + Website
Vielen Dank.
Was ist der unterschied der methoden get und post ? Zitat:
versteh das noch nciht so richtig :S |
Re: Indy + Website
In der HTML-Seite steht drin was gemacht wird: Get oder Post steht da als method drin.
Der Unterschied liegt darin, dass Get-Parameter an die Url angehängt werden und Post-Parameter separat übertragen werden. Deshalb musst du die dann auch als String-Liste als zweiten Parameter übergeben. |
Re: Indy + Website
Bei Get werden sämtliche Parameter (also Formularfelder) in der URL übertragen. z. B.
![]() Die URL besteht also aus der Domain deineseite.de, der Datei index.php und 2 Parametern. Nach der Datei kommt ein Fragezeichen was sozusagen den Beginn der Parameter einleitet. Ein Parameter besteht immer aus einem Paar, wobei der erste Wert der Name des Parameters und der zweite gefolgt nach einem Gleichheitszeichen der Wert für den Parameter ist (Name: sprache | Wert Deutsch). Wenn du mehrere Parameter übergeben willst werden diese mit einem kaufmännischen UND verbunden. Insgesamt könnte es dann so aussehen: ?sprache=deutsch&seite=home Bei POST werden die Parameter ebenfalls so gegliedert, jedoch nicht per URL sondern mit der Anforderung an den Server (Request) versendet. Zum Code:
Delphi-Quellcode:
var
http: TIdHTTP; s: String; Params: TStrings; begin http := TIdHTTP.Create(nil); //erstellen des TIdHTTP-Objekts, du könntest auch die Komponente aufs Form ziehen und mit IdHTTP1 verwenden, du sparst dir dann sowohl Create als auch Free try ... ShowMessage(s); //Zeigt den Quellcode der Eregbnis- / Login- / oder sonstwas - Seite an finally http.free; //das IdHTTP-Objekt löschen um Arbeitsspeicher freizugeben end; end;
Delphi-Quellcode:
//wenn die Übertragungsmethode GET ist und dir die Namen der Eingabefelder bekannt sind kannst du die URL einfach zusammen setzen (siehe oben)
s := http.Get('http://seite.de/datei.php?feld1=bla&feld2=blubb'); //wenn die Übertragungsmethode POST ist benötigen wir erst ein Objekt vom Typ TStrings/TStringList um die Parameter zu setzen Params := TStringList.Create; //Objekt erstellen try Params.add('feld1=bla'); //erstes Parameterpaar hinzufügen Params.Add('feld2=blubb'); //2tes... s := http.Post('http://seite.de/datei.php', Params); //Der erste Parameter von .Post ist die aufzurufende Seite, der 2. übergibt unsere Parameterliste finally Params.free; //Speicher freigeben end; |
Re: Indy + Website
Danke für diene mühe.
wenn ich nun einen button habe, der xyz heisst, und ich will dass er den button klickt, dann geht die seite weiter, und dann soll er button abc klicken, wie sähe das etwa im code aus ? gibt es einen trick um die namen der buttons schneller zu finden? :) |
Re: Indy + Website
Zitat:
![]() |
Re: Indy + Website
danke :).
könntest du mir eventuell noch auf meine andere frage antworten ? |
Re: Indy + Website
Naja, nach dem Get/Post wurde die Seite doch aufgerufen, danach rufst du die nächste wieder mit Get/Post auf usw., ich verstehe gerade das Problem nicht ganz?
Ansonsten könnte es sein, dass dir vielleicht noch ein CookieManager oder so fehlt. |
Re: Indy + Website
Wie Sebastian schon sagte, brauchst du vermutlich noch einen CookieManager.
Delphi-Quellcode:
Ansonsten, zeig doch einfach mal was du schon hast, dann können wir dir bestimmt helfen.
uses
..., IdCookieManager, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; var http: TIdHTTP; cookies: TIdCookieManager; begin http := TIdhttpCreate(nil); try cookies := TIDCookieManager.Create(nil); http.CookieManager := cookies; ... ... end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:32 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