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