wie kann man mit HTTP Request eine Datei herunterladen?



  • die Suchefunktion laüft gerade nicht, jemand hat vielleicht schon die gleiche Frage gestellt.

    Ich habe folgende Code geschrieben:

    TFileStream *file = new TFileStream("c:\\temp.exe",fmCreate);
        String url = "http://....//project.exe";
        IdHTTP1->Get(url,file);
    

    aber ich habe folgende Meldung bekommen:

    "Project project.exe raised exception class EIDSocketError with message 'Socket Error # 11004'. Process stopped, use step or run to continue"

    wie kann man mit HTTP Request eine Datei herunterladen?
    (Überings: die Datei unter dieser URL ist mit IE herunterladbar)

    Danke!



  • fubin_22527 schrieb:

    String url = "http://....//project.exe";
    

    (Überings: die Datei unter dieser URL ist mit IE herunterladbar)

    Diese URL, mit doppelten (Forward)Slashes, funktioniert mit Sicherheit auch im IE nicht.
    Der doppelte Backslash wird ausschliesslich bei den lokalen Pfadangaben von Win/DOS-Systemen benötigt.



  • sorry, ich habe die doppelten (Forward)Slashes falsch angegeben. Der URL sieht ungefähr so aus:

    String url = "http://username:password@62.141.50.213/project.exe";
    

    Mit IE ist es sicherlich herunterladbar.



  • Kennt niemand das Problem? Bis jetzt habe ich es noch nicht gelöst.

    folgende ist eine kopie von meinem Code:

    ...
    String url = "http://username:password@ip_address/project.exe";
    ...
    void TF_Update::download(String url, String fileName)
    {
        TFileStream *fs = new TFileStream(fileName, fmCreate);
        IdHTTP1->Get(url, fs);
        delete fs;
    }
    

    Das URL-Link geht mit Internet Explorer, aber geht nicht mit Get() method von dem Komponent TIdHTTP, strange? 😕

    Mit Google habe ich eine Erklärung für die Fehlermeldung 'Socket Error # 11004' gefunden:

    The requested name is valid, but does not have an Internet IP address at the name server. This is not a temporary error. This means another type of request to the name server will result in an answer.

    Kann jemand mir helfen?
    Danke im voraus!



  • die Lösung habe ich selbst gefunden 🙂

    Property "Request" von TIdHTTP ist header info von ein HTTP Request. User ID, Server Name und Passwört soll man direkt hier eingeben. Dann läut es direkt mit dem Link ohne Username und Passwört e.g. http://ip_addresse/../kkkk.txt



  • @fubin_22527
    stell doch mal deinen fertigen Code um eine Datei herunterzuladen hier rein. Es interessiert mich wie das geht. 🙂



  • Um zu erfahren, wie das funktioniert, braucht es keinen fertigen Code. Sieh dir einfach mal die angesprochene Request-Property von TIdHTTP an.


Anmelden zum Antworten