tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
3
ZUGRIFFE
2732
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    cesupa cesupa ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    329
    Hallo,

    ich versuche grade eine Datei mit Hilfe von QT und deren QHttp-Klasse herunterzuladen. Das kompilieren funktioniert einwandfrei jedoch erhalte ich immer einen Fehler. Hier erstmal der Code:

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    
    #include "HTTPH.h"
    #include <iostream>
    #include <QtGui>
    using namespace std;
     
    HTTPH::HTTPH(const QString& strurl,QWidget* parent):QObject(parent)
    {
        url=new QUrl(strurl);
        http=new QHttp(this);
        file=new QFile(this);
        
        connect(http, SIGNAL(requestFinished(int, bool)),this, SLOT(httpRequestFinished(int, bool)));
    }
     
    HTTPH::~HTTPH()
    {
        delete http;
        delete file;
        delete url;
    }
     
    void HTTPH::download(const QString& fn)
    {
        file->setFileName(fn);
        file->open(QIODevice::WriteOnly);
        
        http->setHost(url->host());
        http->get(url->path(),file);
        
        file->close();
    }
     
    void HTTPH::httpRequestFinished(int id,bool error)
    {
        cout<<"Host:\t"<<url->host().toAscii().constData()<<endl;
        cout<<"Path:\t"<<url->path().toAscii().constData()<<endl;
        
        cout<<"ID:\t"<<id<<endl;
        if(error)
            cout<<"ERROR:\t"<<http->error()<<" "<<http->errorString().toAscii().constData()<<endl;
    }

    Wenn ich jetzt die Funktion download() aufrufe, bekomme ich folgende Konsolenausgabe:

    Host: www.trolltech.com
    Path: /index.html
    ID: 1
    ERROR: 7 Request aborted

    Kann mir jemand sagen, wieso der den Request abbricht?

    Gruß
    cesupa
     

  2. #2
    deepthroat deepthroat ist offline Mitglied Diamant
    tutorials.de Premium-User
    Registriert seit
    Jun 2005
    Beiträge
    8.168
    Hi.

    Das liegt daran, weil du ihm die Datei "unter'm Hintern weg ziehst". Die Operation get() blockiert nicht kehrt sofort zurück. Wenn dann irgendwas runtergeladen wird, wird nur festggestellt das die Datei geschlossen ist... Es ist erst in Ordnung die Datei zu schließen wenn das requestFinished() Signal gesendet wurde.

    Gruß
     
    If at first you don't succeed, try again. Then quit. No use being a damn fool about it.

  3. #3
    cesupa cesupa ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    329
    Hallo,

    also ich lass die Datei jetzt im httpRequestFinished()-Slot schließen, jedoch kommt der gleiche Fehler immer noch.

    Gruß
    cesupa
     

  4. #4
    cesupa cesupa ist offline Mitglied Brokat
    Registriert seit
    Sep 2004
    Beiträge
    329
    Okay, ich habs jetzt hingekiregt. Problem war, dass ich in der main ein neues Objekt meiner Klasse erstellte, die Anfrage gesendet habe und dann das Objekt wieder gelöscht habe. Tja, und da ja nichts blockiert....kann's ja nicht funktionieren
    Danke, dass du mich daruaf gewissermaßen hingewiesen hast

    Gruß
    cesupa
     

Ähnliche Themen

  1. Http-request ?!
    Von mIschKo im Forum Visual Basic 6.0
    Antworten: 0
    Letzter Beitrag: 03.10.07, 18:32
  2. HTTP Request
    Von MagicEpox im Forum Sonstige Sprachen
    Antworten: 2
    Letzter Beitrag: 02.08.07, 14:08
  3. Http Request
    Von NanoNuna im Forum PHP
    Antworten: 2
    Letzter Beitrag: 02.04.07, 10:55
  4. HTTP Request
    Von e2r im Forum CGI, Perl, Python, Ruby, Power Shell
    Antworten: 2
    Letzter Beitrag: 07.02.07, 18:38
  5. Http - Request
    Von rauchmelder im Forum .NET Archiv
    Antworten: 2
    Letzter Beitrag: 04.12.04, 22:42