Autor Beitrag
OliverN_26
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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:
ausblenden 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 17.10.11 11:49 
ausblenden 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');
      //usw...
      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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Mo 17.10.11 11:55 
user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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?!
ausblenden 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 user profile iconNarses: Code- durch Delphi-Tags ersetzt
Einloggen, um Attachments anzusehen!
Horschdware
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: Mo 17.10.11 14:04 
user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 17.10.11 14:12 
Bei gesicherten Verbindungen (https) musst du der Eigenschaft IOHandler eine SSL-IO-Handler-Komponente zuweisen.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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 user profile iconNarses: Beiträge zusammengefasst---

Hallo Andreas

wie sieht das anhand von einem Beispiel aus?
Hab noch nie mit SSL-Verschlüsselungen gearbeitet :-(
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 17.10.11 14:21 
user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Hallo Andreas

wie sieht das anhand von einem Beispiel aus?
Hab noch nie mit SSL-Verschlüsselungen gearbeitet :-(


Also bitte, ein bisschen Eigeninitiative wäre angebracht... :roll:

Komponentenliste durchblättern, TIdSSLIOHandlerSocketOpenSSL aufs Formular ziehen und bei TIdHTTP zuweisen.
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: Mo 17.10.11 14:27 
Klappt nicht. JEtzt findet er eine SSL-Bibliothek nicht --> siehe Anhang
Einloggen, um Attachments anzusehen!
Andreas L.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 744
Erhaltene Danke: 54

Win XP Pro, Win 7 Pro x64
Delphi 7, Delphi XE, C++ Builder 5, SAP R/3
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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.
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1703
Erhaltene Danke: 25

Windows Vista / Windows 10
Delphi 2009 Pro (JVCL, DragDrop, rmKlever, ICS, EmbeddedWB, DEC, Indy)
BeitragVerfasst: Mo 17.10.11 16:32 
user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Jetzt bekomme ich einen Bibliotheken-Fehler.

Welchen Fehler? Was sagt Google oder die Forensuche? Hast du auch die richtigen DLLs?

user profile iconOliverN_26 hat folgendes geschrieben Zum zitierten Posting springen:
Ich nutze Delphi 7 Enterprise mit Indy 9.


Die aktuelle Indy Version ist 10, ein Update kann also nicht schaden. Vllt. gehts dann sogar, wer weiß...
www.indyproject.org/...Files/Indy10.DE.aspx
OliverN_26 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 252

Win7 64-Bit, WinXP SP3
Delphi 7 Enterprise
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19326
Erhaltene Danke: 1749

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 18.10.11 02:37 
Die aktuelle Version findest du stets hier:
indy.fulgan.com/ZIP/