AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Website einloggen und Daten / Tabelle auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Website einloggen und Daten / Tabelle auslesen

Ein Thema von Ykcim · begonnen am 20. Jan 2023 · letzter Beitrag vom 22. Jan 2023
Antwort Antwort
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#1

Website einloggen und Daten / Tabelle auslesen

  Alt 20. Jan 2023, 23:58
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:
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;
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.

Dann habe ich versucht, mit einer BrowserKomponente (FNCWebBrowser), basierend auf Edge die Seite zu laden und dann fernzusteuern:
Delphi-Quellcode:
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;
Aber leider gibt es beim Edge die OleObejcts nicht, sodass ich damit auch nicht weiterkomme.

Hat jemand eine Idee, wie ich das realisieren kann?

Vielen Dank
Patrick
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#2

AW: Website einloggen und Daten / Tabelle auslesen

  Alt 21. Jan 2023, 01:12
Jedes halbwegs orgendliche WebPortal/Shop/Sonstwas hat eine API (REST, SOAP oder Sonstwas) und damit sollte man dann auch reden.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.347 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Website einloggen und Daten / Tabelle auslesen

  Alt 21. Jan 2023, 09:43
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.
Da bleibt nur die Requests und Antworten aus dem Browser mit denen aus deinem Programm zu vergleichen.

Aber leider gibt es beim Edge die OleObejcts nicht, sodass ich damit auch nicht weiterkomme.
Dort kannst du aber JavaScript-Code ausführen:
https://blogs.embarcadero.com/execut...-tedgebrowser/
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Ykcim

Registriert seit: 29. Dez 2006
Ort: NRW
804 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Website einloggen und Daten / Tabelle auslesen

  Alt 21. Jan 2023, 10:46
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
Patrick
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#5

AW: Website einloggen und Daten / Tabelle auslesen

  Alt 21. Jan 2023, 11:14
Nicht mit den neuesten und hippesten Frameworks,
aber für die grundlegensten Funktionen (PHP/HTML/CSS/JS) immernoch ausreichend.

https://wiki.selfhtml.org/wiki/JavaScript
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von softtouch
softtouch

Registriert seit: 13. Feb 2015
Ort: Kerpen
212 Beiträge
 
Delphi 12 Athens
 
#6

AW: Website einloggen und Daten / Tabelle auslesen

  Alt 22. Jan 2023, 09:05
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?
  Mit Zitat antworten Zitat
Antwort Antwort


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 +1. Es ist jetzt 13:39 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz