• 5191阅读
  • 4回复

困扰我2天的QHTTP下载问题 [复制链接]

上一主题 下一主题
离线l_xin
 
只看楼主 倒序阅读 楼主  发表于: 2009-09-04
— 本帖被 XChinux 从 General Qt Programming 移动到本区(2011-01-02) —
我把书上的例子简化写了个程序,下载HTTP图片,经测试结果正常。
主要代码如下:
.h头文件:
class HttpGet : public QObject
{
    Q_OBJECT

public:
    HttpGet(QObject *parent = 0);
    bool getFile(const QUrl &url);
signals:
    void done();
private slots:
    void httpDone(bool error);
private:
    QHttp http;
    QFile file;
};


.cpp源文件:
HttpGet::HttpGet(QObject *parent)
    : QObject(parent)
{
    connect(&http, SIGNAL(done(bool)), this, SLOT(httpDone(bool)));
}

bool HttpGet::getFile(const QUrl &url)
{
        QString localFileName = "./Images/"+QFileInfo(url.path()).fileName();
        file.setFileName(localFileName);

    http.setHost(url.host(), url.port(80));
    http.get(url.path(), &file);
    http.close();
    return true;
}

void HttpGet::httpDone(bool error)
{
    if (error) {
        std::cerr << "Error: " << qPrintable(http.errorString())
                  << std::endl;
    } else {
        std::cerr << "File downloaded as "
                  << qPrintable(file.fileName()) << std::endl;
    }
    file.close();
    emit done();
}


main.cpp中
调用getFile("http://........")图片成功下载。
——————————————————————————————————————————————

我把这个同样的类移入我的项目中(代码只改动filename部分),编译没有报错,但是当调用哪个到:
http.setHost(url.host(), url.port(80));
int g = http.get(url.path(), &file);
就出问题了,HTTP给我返回了一个ErrorString:Request Aborted
查看路径下的文件夹,该图片文件已经建立,但是没有任何内容。

查看int g的值,返回值为6……

希望高手能帮帮忙,告诉我大概怎么回事,或者给我个提示看看该怎么找这个问题……我从昨晚一直调试到今天,没找到原因。
在url部分,我也直接放入相同的URL地址,独立于项目外的类可以下载图片,而移植到项目内的类就出这个错……
难道是我项目中哪些冲突了?根据HTTP返回的error string 这个错误大概是什么原因产生的??
离线l_xin
只看该作者 1楼 发表于: 2009-09-04
没人帮帮忙么???

………………

几个同学和我一起找了好久都没搞定
离线allendang
只看该作者 2楼 发表于: 2009-09-04
代码上没看出什么问题,从错误代码上看可能的原因有一个,你太过频繁的下载某个服务器上的图片,并且每次下载之间没有间隔,结果被服务器认为是恶意连接,然后拒绝你的请求。

你可以在每次下载之间停一秒左右,问题应该就没了。
离线l_xin
只看该作者 3楼 发表于: 2009-09-07
引用第2楼allendang于2009-09-04 21:52发表的  :
代码上没看出什么问题,从错误代码上看可能的原因有一个,你太过频繁的下载某个服务器上的图片,并且每次下载之间没有间隔,结果被服务器认为是恶意连接,然后拒绝你的请求。
你可以在每次下载之间停一秒左右,问题应该就没了。



非常感谢!!!
应该是这个问题了,我在独立的程序中加入for循环,服务器就拒绝了
离线foxgod

只看该作者 4楼 发表于: 2011-09-23
回 3楼(l_xin) 的帖子
我用一楼一样的方法下载图片,可以下载下来是亦歌0字节的东西,为什么呀!
快速回复
限100 字节
 
上一个 下一个