![]() |
Website einloggen und Daten / Tabelle auslesen
Hallo Zusammen,
zu diesem Thema gibt es zwar eine Menge Ansätze, aber ich habe noch keinen passenden gefunden. Gerade weil viele Ansätze noch auf dem IE und nicht auf Edge basieren. Hintergrund: Wir haben einen Kunden, bei dem wir Aufträge aus einem WebProtal abrufen. Diese Aufträge werden auch über dieses Protal versendet, sodass ich keinen Lieferschein in unserem ERP-System generiere. Die Fertigungsaufträge müssen dann von Hand geschlossen werden. Dieses Schließen möchte ich gerne automatisieren. Idee: Ich möchte mit einer ServerApp die Website in regelmäßigen Abständen aufrufen Mich mit den vorhandenen Zugangsdaten einloggen Die Auftragsübersicht in dem Protal nach jeder offenen AuftragsNr aus unserem System durchsuchen Wird die AuftragsNr gefunden, ist der Auftrag noch nicht ausgeliefert Wird die AuftragsNr nicht gefunden, ist der Auftrag fertig und ich würde ihn via SQL-Statements in unserem ERP-System schließen. Ich begebe mich damit auf ziemliches Neuland. Erst wollte ich die Website auslesen:
Delphi-Quellcode:
Aber damit bin ich nicht weitergekommen. Ich bekomme es nicht hin, dass der Login-Vorgang wirklich stattfindet. Ich bekomme den Quelltext der Seite ausgegeben und das war's.
function Login2: string;
var IdHTTP: TIdHTTP; Request: TStringList; Response: TMemoryStream; begin Result := ''; try Response := TMemoryStream.Create; try Request := TStringList.Create; try Request.Add('username='+frme_Main.edt_User.Text); Request.Add('passwd='+frme_Main.edt_Passwort.Text); IdHTTP := TIdHTTP.Create; try IdHTTP.AllowCookies := True; IdHTTP.HandleRedirects := True; IdHTTP.Request.ContentType := 'application/x-www-form-urlencoded'; IdHTTP.Post(Frme_Main.edt_URL.Text, Request, Response); Result := IdHTTP.Get(Frme_Main.edt_URL.Text); finally IdHTTP.Free; end; finally Request.Free; end; finally Response.Free; end; except on E: Exception do ShowMessage(E.Message); end; end; Dann habe ich versucht, mit einer BrowserKomponente (FNCWebBrowser), basierend auf Edge die Seite zu laden und dann fernzusteuern:
Delphi-Quellcode:
Aber leider gibt es beim Edge die OleObejcts nicht, sodass ich damit auch nicht weiterkomme.
WBrwsr.Navigate(edt_URL.Text); //Seite laden
WebBrowser1.OleObject.document.forms.item(0).elements.item('username').value:=frme_Main.edt_User.Text; WebBrowser1.OleObject.document.forms.item(0).elements.item('passwd').value:=frme_Main.edt_Passwort.Text; if messagedlg('wollen sie die seite betreten?',mtconfirmation, [mbyes, mbno],0) = mryes then begin WebBrowser1.OleObject.document.forms.item(0).submit; end; Hat jemand eine Idee, wie ich das realisieren kann? Vielen Dank Patrick |
AW: Website einloggen und Daten / Tabelle auslesen
Jedes halbwegs orgendliche WebPortal/Shop/Sonstwas hat eine API (REST, SOAP oder Sonstwas) und damit sollte man dann auch reden. :stupid:
|
AW: Website einloggen und Daten / Tabelle auslesen
Zitat:
Zitat:
![]() |
AW: Website einloggen und Daten / Tabelle auslesen
Hallo Zusammen,
vielen Dank für Eure Antworten. @himitsu: Leider hat das Portal keine API, sonst wäre das die Wahl - auch wenn ich damit noch nie gearbeitet habe... Daher muss ich es ohne schaffen... @jaenicke: Da muss ich mich mal reinlesen. Vielleicht komme ich darüber weiter. Meine Erfahrungen mit JavaScript sind dürftig und liegen viele Jahre zurück. LG Patrick |
AW: Website einloggen und Daten / Tabelle auslesen
Nicht mit den neuesten und hippesten Frameworks,
aber für die grundlegensten Funktionen (PHP/HTML/CSS/JS) immernoch ausreichend. ![]() |
AW: Website einloggen und Daten / Tabelle auslesen
Vielleicht fehlt der cookiemanager.
Was gibt denn der POST zurück im Response memorystream und was steht nach dem POST in idhttp.response.ResponseText oder idhttp.response.ResponseCode? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:50 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