AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Formular mit HTTPRequest ausfüllen

Formular mit HTTPRequest ausfüllen

Ein Thema von DelphiDude · begonnen am 16. Jul 2020 · letzter Beitrag vom 16. Jul 2020
Antwort Antwort
Seite 1 von 2  1 2   
DelphiDude

Registriert seit: 13. Feb 2020
10 Beiträge
 
#1

Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 11:31
Ich möchte einen Registrierungsprozess auf einer Webseite automatisieren.

Zu dem Registrierungsprozess gehört dass man sich zuerst auf der Webseite einloggt,
danach zu der URL mit den Registreirungsoptionen wechselt und dann die Formularfelder füllt und
anschlißend "abschicken" klickt.

Das Formularfeld ist in mehrere Tabs unterteilt, hat DrowpDown-Felder, Checkboxen, Textfelder und erlaubt das hinzufügen von Bildern.

Ich hab das Tutorial auf dieser Seite Formular zu der Indy-Komponente gelesen.
https://www.delphipraxis.net/160152-...protokoll.html

Allerdings habe ich daraus nicht gelernt wie ich jetzt die Informationen in die Formularfelder und Bilder setze.
Beim Klick auf "absenden" wird eine javascript-Funktion ausgeführt und keine PHP-Resource.
Des Weiteren habe ich keinen Zugriff auf die Quellcode-Dateien mit Ausnahme vom Web-Inspektor.

Ist es dann überhaupt machbar das umzusetzen?
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
2.803 Beiträge
 
Delphi 10.2 Tokyo Enterprise
 
#2

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 11:52
Alternative: Anstatt das visuelle Formular auszufüllen ist es besser zu klären, ob es eine Schnittstelle für Entwickler gibt (SOAP, REST, whatever).
Wenn du nicht so recht weißt, wonach du schauen musst, wäre ein Link zur betreffenden Website hilfreich.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
881 Beiträge
 
#3

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 12:01
Wenn du dir den Quelltext der betreffenden Login-Webseite anschaust, wird es im Formular ja eine Referenz auf die POST-Url geben. In den meisten Fällen ist das eine PHP-Datei. Die einzelnen Formularfehler habe ja eine ID. Aus der URL zu der PHP, den ID's und den Werten der Formularfeldern kannst du dir den kompletten Request-String zusammensetzen und über IdHTTP senden. Musst halt nur schauen ob mit GET oder POST.

z.B.
Code:
IdHTTP.Get('http://www.webseite.de/logon.php?username=anton&password=123456&acounttype=user');
Du kannst auch mal Wireshark bemühen und schauen was so alles übertragen wird.

Manchmal ist im Formular auch noch ein Hidden-Feld mit irgendeiner dynamischen Zahl, einem Hash oder sonstwas drin.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (16. Jul 2020 um 12:04 Uhr)
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
387 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 13:10
Warum so kompliziert mit Indy, wenn es mit den Delphi Webbroker und IIS viel einfacher ist und genau dazu da ist Webanfragen zu behandeln? Mach eine WebBroker Anwendung (ISAPI, CGI oder Standalone) und handle das da per Web-Action. Der ganze Kram mit der Komunikation, etc. muss dich da nicht kümmern. Das macht das Webbroker Framework alles für dich.

Im Action deines Webbrokermoduls kannst du dann die übergebenen Daten des Webformulars ganz einfach verarbeiten und auswerten. Dazu ist der Parameter Request zuständig, der dann die ganzen Formulardaten enthält.

Im Formular machst du eine Form, die die Daten per POST überträgt auf die URL deiner Webbroker Anwendung: http://meinwebserver.de/myloginapp.exe/login (In diesem Fall eine CGI-Exe)

Die Namen Der Formularelemente müssen dann logischerweise mit denen im folgenden Login Action Event übereinstimmen.

Delphi-Quellcode:
procedure TMyWebModule.waLoginAction(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
  aPassword, aLogin: String;
begin
  { Daten die per POST übertragen werden befinden sich im ContentFields.
    Daten die per GET übertragen werden befinden sich im QueryFields. }

  aLogin := Request.ContentFields.Values['login']; // Daten des Eingabefeldes "login" im Webformular
  aPassword:= Request.ContentFields.Values['password']; // Daten des Eingabefeldes "password" im Webformular
  // ... Hier kann nun das Login überprüft werden.
end;

Geändert von Rolf Frei (16. Jul 2020 um 15:26 Uhr)
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
881 Beiträge
 
#5

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 14:01
Ich glaube ich habe den Post falsch verstanden.

Ich dachte der TE wollte den Registrierungsprozess auf eine fremden Internetseite automatisieren.
Aber er will wohl eher den Registrierungsprozess seines eigenen Web-Service automatisieren.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Rolf Frei

Registriert seit: 19. Jun 2006
387 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 15:25
Ja ich habe das so verstanden, dass er ein Login über eine Website auf dem Server machen will. Dafür ist der Indy Ansatz komplett falsch und hierfür unpassend. Mit Indy müsste er den ganzen HTTP Serverteil schreiben und das macht keinen Sinn. IIS ist dafür da und dafür kann man dann eine Delphi WebBrokeranwendung schreiben, die dann von IIS für die aufgerufene URL genutzt wird.
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
1.840 Beiträge
 
Delphi 7 Professional
 
#7

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 16:10
Für mich klingt die Fragestellung so, als ob mit einem Delphiprogramm ein automatisches Login auf "irgendeiner" Webseite erfolgen soll. Von einer eigenen Webseite, die dann per Webserver ... zur Verfügung gestelle wird, kann ich dort nichts entnehmen.

Denke mal: In Bezug auf die Fragestellung besteht noch einiges an Klärungsbedarf.
  Mit Zitat antworten Zitat
DelphiDude

Registriert seit: 13. Feb 2020
10 Beiträge
 
#8

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 16:33
Ich glaube ich habe den Post falsch verstanden.

Ich dachte der TE wollte den Registrierungsprozess auf eine fremden Internetseite automatisieren.
Aber er will wohl eher den Registrierungsprozess seines eigenen Web-Service automatisieren.
Ne ne du hast das schon richtig verstanden.
Der Prozess findet auf einer fremden Webseite statt.

Die Webseite wo ich das machen will ist beim
https://www.americanstockdog.org/

Auf meine Anfrage hin nach einer Entwickler Schnittstelle hab ich nie eine Antwort bekommen.


Also auch erstmal danke für die schnellen antworten.
Das bin ich so gar nicht gewohnt
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
1.647 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 18:44
Was bedeutet "so gar nicht gewohnt"? Schnelle Antworten in der DP oder generell?

Geändert von TurboMagic (16. Jul 2020 um 18:44 Uhr) Grund: Vertipper
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
881 Beiträge
 
#10

AW: Formular mit HTTPRequest ausfüllen

  Alt 16. Jul 2020, 19:29
Ich glaube ich habe den Post falsch verstanden.

Ich dachte der TE wollte den Registrierungsprozess auf eine fremden Internetseite automatisieren.
Aber er will wohl eher den Registrierungsprozess seines eigenen Web-Service automatisieren.
Ne ne du hast das schon richtig verstanden.
Der Prozess findet auf einer fremden Webseite statt.

Die Webseite wo ich das machen will ist beim
https://www.americanstockdog.org/

Auf meine Anfrage hin nach einer Entwickler Schnittstelle hab ich nie eine Antwort bekommen.


Also auch erstmal danke für die schnellen antworten.
Das bin ich so gar nicht gewohnt
Dann habe ich das doch richtig gelesen

Da ist ein Hidden-Feld mit dem Namen "_token". Das hatte ich mir schon gedacht.
Code:
<input name="_token" type="hidden" value="422wu4yZWoqMd0Qvh3ScigqVV12KVUGSibXhEV1Y" aria-describedby="4rm9n3-abide-error">
Die dazugehörige Value musst natürlich aus der Seite auslesen, dann kannst du dir damit eine Url bauen:

IdHttp.get('https://www.americanstockingdog.org/login?email=aaa@bbb.de&password=123456&_token=422wu4yZWoqMd0Qvh3ScigqVV12KVUGSibXhEV1Y'); Musst du ggf noch in UTF8 umwandeln.

Das ist natürlich die GET-Methode. Aber manchmal geht die auch. Je nachdem wie das PHP das auswertet.
Wenn das nicht geht, dann musst du die Daten natürlich als POST-Request schicken.
Ich würde das an deiner Stelle erst einfach mal über das Navigation-Edit vom Browser probieren.

Ich denke dann hast du schon was du möchtest.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.

Geändert von Hobbycoder (16. Jul 2020 um 19:37 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +2. Es ist jetzt 02:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf