Datei von einem Link herunterladen

Vom Front-End bis SOAP.

Moderator: Moderatoren

Antworten
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Datei von einem Link herunterladen

Beitrag von Wolfgang Ciriack »

Hallo,
ich habe einen Link mit user und Kennwort als Parameter.
Ich möchte diese Datei herunterladen.
Mit normalen HttpClient (oder xbHttpClient) bekomme ich keinen Zugriff
(Fehler: Your browser is unknown 0.0 ......)
Jetzt dachte ich an XbpHTMLViewer2(), da wird die Seite geladen und auch sofort die Datei heruntergeladen.
Fragen:
Ist das über den XbpHTMLViewer2() überhaupt der richtige Weg, wenn das ganze in einem Dienst automatisiert ablaufen soll ?
Würde das auch ohne Anzeigen eines Fensters klappen ?
Kann man den XbpHTMLViewer2 so konfigurieren, dass diese Downloads in einem vorgegebenem Ordner landen ?
Viele Grüße
Wolfgang
psp
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 250
Registriert: Do, 22. Okt 2009 13:42
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von psp »

Hallo,

sollte das Erkennen des Browsers über den UserAgent erfolgen, kann man mit der Methode ":setUserAgent()" dem "HttpClient" einen UserAgent übergeben, vielleicht funktioniert dies. Was die einzelnen Browser hier übergeben, sagt dir Google.

oder: http://wieistmeinuseragent.de/

Grüße
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von Tom »

Aber der Download wird beim Download über eine Site (wie bei den Downloads der Computerzeitschriften) doch durch eine Browserfunktionalität ausgelöst. Geht das mit einem HttpClient überhaupt?
Herzlich,
Tom
psp
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 250
Registriert: Do, 22. Okt 2009 13:42
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von psp »

Hallo,

wir legen unsere Dateien zur Lizenzerweiterung auf unseren Webserver ab und laden sie so beim Kunden über den HttpClient runter:

Code: Alles auswählen

oHC     := HttpClient():new("http://www.url-not-exist.com/file.end")
//oHC:setUserAgent( <cUserAgent> )

cResult := oHC:send()

IF oHC:getStatusCode() != 200
  IF oHC:getStatusCode() ==-1
    ? "Non HTTP protocol error:"
    ? oHC:getLastError()
    ? oHC:getLastMessage()
  ELSE
    ? "HTTP protocol error:"
    ? oHC:httpResponse:statusCode
    ? oHC:httpResponse:statusText
  ENDIF
ENDIF

//cResult = Inhalt der Datei, diesen unter einem entsprechenden Dateinamen abspeichern
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von Wolfgang Ciriack »

Danke erst mal, werde da mal ein wenig rumprobieren.
Weiterhin habe ich mal die Fragen auch an Alaska gestellt.
Viele Grüße
Wolfgang
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von brandelh »

Ich hab das mit cFile = LoadFromUrl() gemacht, wobei man die Kennwörter voranstellen kann.

Ich hatte allerdings auch nie ein Problem mit der Art meines Browsers in diesem Zusammenhang.
Gruß
Hubert
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15697
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 66 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von brandelh »

Auch bei der Funktion kann man den UserAgent einstellen:

SetLoadFromUrlIdentification()
Gruß
Hubert
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von Wolfgang Ciriack »

Hallo Hubert,

danke für deine Gedanken.
Mittlererweile steht in der Hilfe zu LoadFromUrl:

Code: Alles auswählen

Loads a document from a Web server. 
The function is deprecated. Use the HttpClient() class instead. 
Example: cResult := HttpClient():new( "http://www.alaska-software.com" ):send() 
Habe es damit und mit Hilfe von Andreas auch schon so probiert:

Code: Alles auswählen

cUrl := "https://......com/Documents/Documents/DownloadFile/33"
oHttpClient := HttpClient():new(cUrl)
oHttpClient:setUserAgent("Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/114.0")
oHttpClient:HttpRequest:addParameter( "usr", "ERPD....." )
oHttpClient:HttpRequest:addParameter( "pwd", "S........." )
cResult := oHttpClient:send()
IF .NOT. nStatusOk == oHttpClient:getStatusCode()
    RETURN .F.
ENDIF
Status ist 200, in cResult ist aber nur eine komplette html-Seite mit js code usw.
Ich vermute, das der Aufruf des Links eine Seite mit Hilfe von js aufbaut und den Download der Datei veranlasst.
Das sehe ich ja auch, wenn ich die Url mit z.B. HtmlViewer2 aufrufe, da wird eine Login-Seite aufgebaut und der Dateidownload gestartet.
Ich denke, das muss die Firma mir eine andere Möglichkeit schaffen, an die Dateien zu kommen.
Viele Grüße
Wolfgang
Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 9367
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Hat sich bedankt: 102 Mal
Danksagung erhalten: 361 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von Tom »

Sage ich doch. Der automatisch ausgelöste Download bedarf eines Browsers. Ein HttpClient arbeitet auf Dokumentenebene.
Herzlich,
Tom
ramses
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2517
Registriert: Mi, 28. Jul 2010 17:16
Hat sich bedankt: 12 Mal
Danksagung erhalten: 77 Mal

Re: Datei von einem Link herunterladen

Beitrag von ramses »

Einen Download auf einer Seite auslösen (z.B. durch Button drücken) ging doch früher problemlos über

Code: Alles auswählen

oIE := CreateObject( "InternetExplorer.Application" )
Damit liess sich der Browser bezw. der Inhalt fersteuern und beliebige Aktionen ausführen.

Ob das heute noch geht weiss ich allerdings nicht......
Valar Morghulis

Gruss Carlo
Benutzeravatar
Wolfgang Ciriack
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2936
Registriert: Sa, 24. Sep 2005 9:37
Wohnort: Berlin
Hat sich bedankt: 13 Mal
Danksagung erhalten: 34 Mal
Kontaktdaten:

Re: Datei von einem Link herunterladen

Beitrag von Wolfgang Ciriack »

Habe jetzt der Firma gesagt, Sie mögen mir statt des Links zum Bild das Bild direkt als Base64 string in die json-Datei schreiben.
Damit sollte das hoffentlich dann klappen.
Viele Grüße
Wolfgang
Antworten