[GELÖST] NAV ruft Webseite auf....

14. Juli 2009 10:32

Hallo Community,

ich habe da eine Herausforderung:

ich möchte aus NAV heraus eine Webseite aufrufen, welche mir gewisse Daten zurückliefert. Diese Daten möchte ich in NAV weiter verarbeiten.
Ich bin soweit gekommen, daß ich über Automation die Internet Explorer Objekte dazu verwendet habe, die URL aufzurufen. Das klappt auch mit oder ohne Anzeige des IE-Fensters.

Aber wie komme ich an das Ergebnis ran?!?

Hat jemand so etwas in dieser Art schon einmal gemacht?

Viele Grüße
Dirk.
Zuletzt geändert von d.simonis am 14. Juli 2009 13:58, insgesamt 1-mal geändert.

Re: NAV ruft Webseite auf....

14. Juli 2009 10:51

d.simonis hat geschrieben:Ich bin soweit gekommen, daß ich über Automation die Internet Explorer Objekte dazu verwendet habe, die URL aufzurufen.
Dies wäre übrigens auch ganz einfach (Einzeiler) und ohne Automation gegangen, nämlich über HYPERLINK ;-)

Aber wie komme ich an das Ergebnis ran?!?

Da bin ich überfragt. Was für ein "Ergebnis" ist das? Ein Wert, der in einer Box angezeigt wird o.ä., also innerhalb der Seite?

Re: NAV ruft Webseite auf....

14. Juli 2009 11:28

Hi,

damit sollte das funktionieren. Die Frage ist nur, ob der IE aufgehen soll und der User eine Eingabe machen soll?
Die Funktion hier arbeitet komplett im Hintergrund, da bekommt der Anwender nichts mit.

Code:

Name   DataType   Subtype   Length
MIT   OCX   Microsoft Internet Transfer Control 6.0 (SP6)   

MIT.Protocol := 4;                               // 2=FTP, 4=HTTP
MIT.RequestTimeout := 30;
MIT.AccessType := 0;                             // 0=Default, 1=Direct, 2=Named Proxy
newUrl := MIT.OpenURL(eServiceURL);              // get coded url from Server

REPEAT
  SLEEP(100);                                    // wait at least 5 seconds to get a reply
  Counter += 1;
UNTIL (NOT MIT.StillExecuting) OR (Counter = 50);

IF NOT MIT.StillExecuting THEN BEGIN             // check, if transfer is finished
  IF LogActive THEN BEGIN
    Fil.TEXTMODE(TRUE);
    Fil.WRITEMODE(TRUE);
    Fil.CREATE('D:\codedurl.txt');
    Fil.WRITE(newUrl);
    Fil.CLOSE();
  END;

  IF COPYSTR(newUrl,1,4) <> 'http' THEN BEGIN
    ERROR(err_0007);
  END ELSE BEGIN
    // .... weiterfuehrender Code
    // ....
  END;
END ELSE
  ERROR(err_0006,Counter * 100);                 // no response within 5 seconds -> site down?



Gruesse
feri

Re: NAV ruft Webseite auf....

14. Juli 2009 12:12

Euch beiden erstmal ein dickes "Danke" für die schnellen Antworten :-)

Hallo Natalie...
das wichtige steckt genau in der Antwort des Webservers. Es handelt sich dabei nicht um eine HTML-Seite, die ich parsen müßte, sondern die Antwort würde mir genau so, wie sie vom Server kommt, ausreichen.

Hallo Feri...
dieses OCX ist zumindest bei mir und auf den Kundenrechnern nicht vorhanden :-(
Außerdem verstehe ich Deinen Code so, daß eine "coded URL" in die Datei geschrieben wird - ist das so richtig?
Was ich brauche ist die Antwort des Web-Servers auf meine URL, also gewissermaßen den Quelltext der zurückgelieferten Seite (wobei es sich hier nicht um eine HTML-Seite handelt)

Habt Ihr da noch eine Idee???

Viele Grüße
Dirk.

Re: NAV ruft Webseite auf....

14. Juli 2009 13:41

Hallo,

wie der Zufall so spielt, ich musste mich gestern auch so einem Vorhaben beschäftigen

Code:
Name   DataType   Subtype   Length
WinHTTP   Automation   'Microsoft WinHTTP Services, version 5.1'.WinHttpRequest   


Code:
IF ISCLEAR(WinHTTP) THEN
  CREATE (WinHTTP);
WinHTTP.Open('GET','http://www.IRGENDWAS.de/auswertung.php',FALSE);
WinHTTP.Send;
IF WinHTTP.WaitForResponse(10) THEN BEGIN
  CLEAR(Antwort);
  Antwort := WinHTTP.ResponseText;
  MESSAGE(FORMAT(Antwort));
END ELSE
  MESSAGE('No Response');


Was soll ich sagen passt, wackelt und hat Luft.

Wenn man allerdings versucht winhttp mit Events zu definieren, dann bricht Navision nach dem Send Befehl ab, hatte noch keine Zeit zu checken woran es liegt, der Obige Code ist so lauffähig.
Zuletzt geändert von Ufuk am 14. Juli 2009 14:11, insgesamt 1-mal geändert.

[GELÖST] Re: NAV ruft Webseite auf....

14. Juli 2009 13:57

WOW!!!!

Wie geil ist das denn???

Superklasse, es funktioniert genau so, wie ich es mir vorgestellt hatte!
Vielen lieben Dank dafür und ich hoffe, ich kann mich bald dafür mal revanchieren ;-)

Viele Grüße
Dirk.

Re: NAV ruft Webseite auf....

15. Juli 2009 10:31

d.simonis hat geschrieben:Hallo Feri...
dieses OCX ist zumindest bei mir und auf den Kundenrechnern nicht vorhanden :-(
Außerdem verstehe ich Deinen Code so, daß eine "coded URL" in die Datei geschrieben wird - ist das so richtig?
Was ich brauche ist die Antwort des Web-Servers auf meine URL, also gewissermaßen den Quelltext der zurückgelieferten Seite (wobei es sich hier nicht um eine HTML-Seite handelt)


Hi,

ja, die OCX ist nicht gleich bei jedem Windows dabei, die wurde bei uns automatisch, falls notwendig, nachinstalliert.
Das mit dem codedurl.txt File ist einfach ein Logfile.

In meinem Beispiel wird vom Webservice eine verschluesselte Url angefordert, welche ich mit MIT.OpenURL in die Variable newUrl schreibe.

Aber in dem Fall passt das ja eh schon bei dir mit dem anderen Code. :wink:

Gruesse
feri