IdHTTP hängt Anwendung auf



  • Sobald ein Server nicht erreichbar ist oder eine Datei nicht mehr verfügbar, hängt die Anwendung. Ich lade 1000 Dateien runter, sobald eine nicht verfügbar ist soll er abbrechen. Wie mache ich das und wie stelle ich fest ob die Datei übertragen worden ist?

    Ich lade die Dateien mit Post runter:

    AnsiString datei = HTTP->Post(url, DataString);
    

    gruß,
    Bernd



  • Naja wenn eine Datei nicht vorhanden ist müsstest du doch einen 404 bekommen?!

    Also die Indy Komponenten werfen dann ja eine entsprechende exception.

    Hier mal der Coden den ich verwende (allerdings um Daten an einen Server zu schicken und den Return abzufangen aber das dürfte wohl auch für den Download funktionieren?!)

    String Tsms_sender::usr_createRequest(String url, String params)
    {
      // --1.0--
      // create a POST request and send it with the IdHTTP Object
      // return the reply as a String
      TStringStream *InStream=new TStringStream();
      TStringStream *OutStream=new TStringStream();
      OutStream->WriteString(UnicodeString(params));
      IdHTTP1->Request->ContentType="application/x-www-form-urlencoded";
      try
      {
    	IdHTTP1->Post(url, OutStream, InStream);
      }
      catch(...)
      {
    	DEBUG->Lines->Add("[Information] IdHTTP has thrown an exception!");
      }
      InStream->Position=0;
      String inas = InStream->ReadString(InStream->Size);
      delete OutStream;
      delete InStream;
      return inas;
    }
    


  • stimmt du hast recht, habs nochmal getestet. es kommt keine Fehlermeldung.

    Mein eigentliches Problem ist nun, wenn man das Programm verschiebt oder auf ne Scrollbar drückt reagiert das Programm nicht mehr. das passiert allerdings nur wenn ich mit IdHTTP gerade etwas runterlade.

    wie kann ich den fehler beheben?



  • Bin nur ein Anfänger aber grundsätzlich sollte man alles was etwas länger dauern kann (wie Downloads) in einen separatem Thread auslagern..

    Hintergrundaufgaben gehören in einen separaten Thread.



  • ok danke! kennst du zufällig ein gutes tutorial zu Threads (Windows) oder kannst mir ein kleines Beispiel hier posten? wäre nett 😉



  • Bin, wie gesagt, auch Neuling und hab noch nichts mit Threads gemacht aber bislang hab ich unter bcb-tutorials schon gute Sachen gefunden:

    http://bcb-tutorial.c-plusplus.net/inhalt.html#Thema7
    http://bcb-tutorial.c-plusplus.net/Thread/artikel1.html

    Hoffe du kommst damit klar, würd mich über Rückmeldung freuen (weil ich dann evtl. auch mal Threads in Angriff nehmen würde..)



  • ok danke mal. hast ne mail !


Anmelden zum Antworten