Autor |
Beitrag |
OliverN_26
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 10:34
Hallo
Ich möchte 2 Werte in Formular Felder einer Internetseite senden, diese bestätigen und die Folgeseite dann wiederum interpretieren. Ich benötige diese Informationen für einen Datenimport, da dieser Vorgang momentan händisch läuft. Kann ja eigentlich nicht so schwer sein 2 Formularfelder aus Delphi raus zu befüllen, oder?
Die Internetseite sieht wie folgt aus:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12:
| <div class="contentBody"> <form id="orderDetails" method="post" action="/MWIA/fc.htm?_flowExecutionKey=_cF3DF0F5F-5AC9-AA49-EF94-AD2B84B3E4F0_k85A54B9C-7754-52D4-5A84-D82AC4895810"><br> <label for="techId">Techniker Nummer</label><br/> <input id="techId" name="techId" style="-wap-input-format: '5N'; -wap-input-required: true;" type="text" value="" maxlength="5"/><br><br/> <--- 1. Feld <label for="woId">Auftragsnummer</label><br/> <input id="woId" name="woId" style="-wap-input-format: '6N'; -wap-input-required: true;" type="text" value="" maxlength="6"/><br/><br/> <--- 2. Feld <input type="submit" class="button" name="_eventId_login" value="Bestätigen"/><br/><br/> <input type="hidden" name="tek" value="SCH" /> </form> </div> |
Beispiel: 1.Feld = 123 2.Feld = 456
Wie fange ich so was an?
Mal so nebenbei. Hier wird nichts illegales gemacht. Ich brauche lediglich eine Auswertung einer Auftragsnummer, was leider immer per Hand eingetragen werden muß.
Danke
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 17.10.11 11:49
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| uses ..., IdHTTP;
var http: TIdHTTP; params: TStrings; result: String; begin http := TIdHTTP.Create(nil); try params := TStringList.Create; try params.add('techId=1234'); result := http.post('http://www.domain.com/script.php', params); finally FreeAndNil(params); end; finally FreeAndNil(http); end; end; |
EDIT: Moment mal, irgendwie kam mir dein Name bekannt vor: www.delphiforum.de/viewtopic.php?t=106809
Was soll dieser Thread wenn du schon weißt wie es geht? 
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Mo 17.10.11 11:55
OliverN_26 hat folgendes geschrieben : |
Quelltext 1:
| action="/MWIA/fc.htm?_flowExecutionKey=_cF3DF0F5F-5AC9-AA49-EF94-AD2B84B3E4F0_k85A54B9C-7754-52D4-5A84-D82AC4895810"> |
|
Nach diesem "flowExecutionKey" sollte man evtl noch schauen. Bleibt der in dieser Anwendung immer gleich oder wird der bei jedem Besuch neu generiert, oder....?
Btw: Ich sehe gerade beim Schreiben, was Andreas noch hinzugefügt hat.
Warum machst du hier einen neuen Thread auf, der das gleiche Problem behandelt, das in einem alten Thread von dir schon gelöst wurde?
Sehr merkwürdig...
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 12:18
Ähm .. ?!
Ich glaub ich steh etwas auf dem Schlauch. Wieso ist dass das Gleiche?
Bei meinem alten Thread hab ich Werte aus Delphi an ein PHP-Script geschickt, was diese Daten dann in die Datenbank sendet.
JETZT will ich aber 2 Formularfelder einer Internetseite mit Werten füllen, den OK Button auf der Internetseite drücken und schauen wie die Auswertung aussieht.
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 17.10.11 12:22
Selbes Prinzip? Du sendest Daten an eine Internetseite und wertest das Ergebnis aus. Wenn du im Browser auf den Submit-Button des Formulars klickst, passiert auch nichts anderes*.
* = Es sei denn die Seite verwendet JavaScript. Dann musst du einen TWebBrowser verwenden und automatisieren, siehe Forum-Suche.
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 12:27
ah ok .. dumme Frage: Wird der OK-Button automatisch ausgelöst? Wo landet denn die Ergebnisseite? Das interpretieren dieser Ergebnisseite passiert dann in "script.php" ?
P.s.: Die Seite verwendet kein Javascript.
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Mo 17.10.11 13:25
Bei diesem Prinzip gibt es keinen "OK"-Button.
Wenn du auf einer Webseite (HTML) ein Formular ausfüllst und auf "OK" klickst, dann werden die eingegebenen Daten per HTTP POST oder GET an einen Service / ein Programm / PHP Script / whatever geschickt, welches dann mit diesen Daten arbeitet.
Wenn du ein Programm wie hier oder in deinem anderen Beispiel schreibst, dann baust du dir die Anfrage selbst zusammen und schickst diese selbst an deinen Verarbeiter.
Konkret schaut das so aus, dass du im Endeffekt lediglich eine neue "Seite" aufrufst. Ob das nun die "index.htm" oder "start.php" oder "rechnewas.php" ist - es ist immer ein Seitenaufruf. Bei der Übermittlung von Daten via GET wird einfach etwas an die URL gehängt, bei Übermittlung via POST wird dem HTTP Request etwas angehängt.
Wikipedia weiss dazu auch etwas zu sagen: de.wikipedia.org/wiki/Http
Für dich heisst das nun: In deinem Programm die gewünschte Seite aufrufen und entsprechende Parameter übergeben wie in deinem anderen Thread. Fertig.
PS: Stichwort am Rande: "HTTP-Redirect" könnte noch interessant sein
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 13:46
Hmm ..
Wenn ich dich richtig verstehe sollte die folgende Methode doch eigentlich gehen oder stell ich mich grad einfach zu dämlich an, da ich das noch nie gemacht habe?!
Delphi-Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| procedure TForm1.Button1Click(Sender: TObject); var sl : TStringList; test : String; begin sl := TStringlist.Create; sl.Add('techId=123'); sl.Add('woId=456');
try test := IdHTTP1.Post('https://www.domain.com',sl); except Application.MessageBox('Fehler','Information',MB_ICONWARNING); Exit; end;
sl.Free; end; |
Leider bekomm ich unten angezeigte Fehlermeldung
Moderiert von Narses: Code- durch Delphi-Tags ersetzt
Einloggen, um Attachments anzusehen!
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Mo 17.10.11 14:04
OliverN_26 hat folgendes geschrieben : | Hmm ..
...oder stell ich mich grad einfach zu dämlich an, da ich das noch nie gemacht habe?! |
Du hast das doch schon gemacht!
Siehe: www.delphiforum.de/viewtopic.php?t=106809
Du hast jetzt in dieser aktuellen, neuen Situation nur eine andere URL und andere Parameter, die du übergibst. Der Rest ist doch identisch!
edit: Wo tritt diese Fehlermeldung auf? Hast du die Intercept-Property gesetzt, wenn du schon mit HTTPS arbeitest?
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 17.10.11 14:12
Bei gesicherten Verbindungen (https) musst du der Eigenschaft IOHandler eine SSL-IO-Handler-Komponente zuweisen.
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 14:12
Kannst du mir zu dem Fehler was sagen?
In meinem Beispiel würde dann also in "test" der komplette HTML-Quellcode stehen (wäre ja genau was ich will) ?
--- Moderiert von Narses: Beiträge zusammengefasst---
Hallo Andreas
wie sieht das anhand von einem Beispiel aus?
Hab noch nie mit SSL-Verschlüsselungen gearbeitet 
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 17.10.11 14:21
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 14:27
Klappt nicht. JEtzt findet er eine SSL-Bibliothek nicht --> siehe Anhang
Einloggen, um Attachments anzusehen!
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 17.10.11 14:30
Du brauchst die beiden DLLs libeay32.dll und ssleay32.dll. Findest du 100% bei Google. Müssten aber auch im Indy-Paket enthalten sein.
|
|
Horschdware
      
Beiträge: 744
Erhaltene Danke: 54
Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
|
Verfasst: Mo 17.10.11 14:35
Den Indy-Komponenten liegt (bis mind. Version 9 - eben lokal geprüft) eine Textdatei bei, die den Umgang und den Verbleib der DLLs klärt (wo herunterladen, wo speichern, etc...).
_________________ Delphi: XE - OS: Windows 7 Professional x64
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 15:14
Jetzt bekomme ich einen Bibliotheken-Fehler. Ich nutze Delphi 7 Enterprise mit Indy 9. Sollte doch damit eigentlich gehen oder muß ich da von anfang an was anders machen? Ich bin kurz vorm verzweifeln 
|
|
Andreas L.
      
Beiträge: 1703
Erhaltene Danke: 25
Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
|
Verfasst: Mo 17.10.11 16:32
|
|
OliverN_26 
      
Beiträge: 252
Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
|
Verfasst: Mo 17.10.11 17:26
Meine DLL's waren falsch. Hab sie verworfen und versuch nun die aktuellste Version (10.5.8 ?) zu installieren.
Ich habe "OpenSSL v1.0.0e" runter geladen, allerdings setzen die DLL's mindestens Indy 10.5.5 voraus. Nur irgendwie finde ich das nirgens im Netz?
Dein Link beschränkt sich auch nur auf 10.0. Scheint als ob da einige Server tot sind. Wo kann ich mir die aktuellste Version runter laden?
Google liefert da weniger den erwünschten Erfolg  Ich denke eine Readme.txt, wie ich das zu installieren habe wird da wohl dabei sein oder?
|
|
jaenicke
      
Beiträge: 19326
Erhaltene Danke: 1749
W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Di 18.10.11 02:37
Die aktuelle Version findest du stets hier:
indy.fulgan.com/ZIP/
|
|