eigene WGET Funktion Umstellen auf .net

5. Juli 2021 10:53

Moin,

für die Vorbereitung zur Ausbildung zum FI/AE mache ich gerade ein Praktikum bei einem Partner in einer großen Stadt in Brandenburg (leider, dank Corona von zu Hause aus und alle Betreuer sind in Terminprojekten und haben nicht immer sofort Zeit :-( ). Ich habe hier u.a. die Aufgabe bekommen, ein altes, von einem meiner Azubivorgänger erstelltes, Modul zu konvertieren. Das funktioniert auch soweit, bin aber nun an eine Funktion geraten, mit der ich nicht weiter komme. Und zwar ein simples WGET() Codesnippes umzuschreiben auf .net....

Den WGET Source versteh ich soweit, nur leider fällt es mir schwer, das umzustellen auf .net. Ich hab gesehen, dass es einige Codeunits gibt, wo der HTTP Request verwendet wird, nur steig ich da mit meinen 17 Jahren noch nicht durch und erhoffe mir hier etwas Hilfe.

Hier mal der alte Code, welche auf einer Automation beruhte. Eine Fkt. die das WGET macht, also eine komplette WebSite herunterlädt nd , die 2. die den Response, also die Website, in eine Datei schreibt.:

Code:

wget(_URI : Text[1024];_filename : Text[1024]) : Boolean
//_URI := https://irgendeinewebsite.de <-- diese soll komplett heruntergeladen werden um sie anschließend in einer Textdatei zu speichern, WGET simuliert dies
//Name   DataType   Subtype   Length
//xmlHTTP   Automation   'Microsoft XML, v6.0'.XMLHTTP60   
//locautXmlDoc   Automation   'Microsoft XML, v6.0'.DOMDocument60   

IF (_URI = '') OR (_filename = '') THEN
  EXIT(FALSE);

IF EXISTS(_filename) THEN
  ERASE(_filename);

IF ISCLEAR(xmlHTTP) THEN
  CREATE(xmlHTTP);

xmlHTTP.open('GET',_URI,FALSE);
xmlHTTP.send();

TimeBegin := TIME;
REPEAT
  TimeElapsed := TIME - TimeBegin;
  readyState := xmlHTTP.readyState;
  IF readyState > 0 THEN BEGIN
    statusCode := xmlHTTP.status;
    statusText := xmlHTTP.statusText;
  END;
UNTIL (readyState = 4) OR ((((TimeElapsed/1000)/60)/60) > 12);  // 12 hour limit

IF (xmlHTTP.status = 200) AND (xmlHTTP.statusText = 'OK') THEN BEGIN
  savefile(_filename);
  exit(true);
END ELSE BEGIN
  EXIT(FALSE);
END;
----------------------------------------------
savefile(_filename : Text[1024])
//speichern den HTTPREsonse als Datei
_var := xmlHTTP.responseStream;
_is := _var;
_bigText.READ(_is);

ToFile.CREATE(_filename);
ToFile.TEXTMODE(TRUE);
ToFile.CREATEOUTSTREAM(_os);
_bigText.WRITE(_os);
ToFile.CLOSE;


Danke im Voraus für etwaige Hilfe.