• QT通过url下载图片到本地


    /*
    strUrl:下载图片时需要的url
    strFilePath:下载图片的位置(/home/XXX/YYY.png)
    */
    void ThorPromote::downloadFileFromUrl(QString strUrl, QString strFilePath)
    {
        qDebug() << strUrl << "    " << strFilePath;
        QFile file;
        file.setFileName(strFilePath);
        if(file.open(QIODevice::WriteOnly))
        {
            QByteArray byte = webhelper::InitGetRequest(strUrl, "downImgFromUrl");
            file.write(byte);
            file.close();
        }
    }
    
    
    //get
    QByteArray webhelper::InitGetRequest(QString url, QString obj)
    {
        //循环拼接
        QString baseUrl =url;
        //构造请求
        QNetworkRequest request;
        request.setUrl(QUrl(baseUrl));
        QNetworkAccessManager *manager = new QNetworkAccessManager();
        // 发送请求
        QNetworkReply *pReplay = manager->get(request);
        //开启一个局部的事件循环,等待响应结束,退出
        QEventLoop eventLoop;
        QObject::connect(pReplay,SIGNAL(finished()), &eventLoop, SLOT(quit()));
    
        //add timeout deal
        QTimer *tmpTimer = new QTimer();
        connect(tmpTimer,SIGNAL(timeout()),&eventLoop, SLOT(quit()));
        tmpTimer->setSingleShot(true);
        tmpTimer->start(5000);
        eventLoop.exec();
        tmpTimer->stop();
    
        if (pReplay->error() == QNetworkReply::NoError)
        {
            qInfo() << QString("request %1 NoError").arg(obj);
        }
        else
        {
            qWarning()<<QString("request %1 handle errors here").arg(obj);
            QVariant statusCodeV = pReplay->attribute(QNetworkRequest::HttpStatusCodeAttribute);
            //statusCodeV是HTTP服务器的相应码,reply->error()是Qt定义的错误码,可以参考QT的文档
            qWarning()<<QString("request %1 found error ....code: %2 %3").arg(obj).arg(statusCodeV.toInt()).arg((int)pReplay->error());
            qWarning(qPrintable(pReplay->errorString()));
        }
        //获取响应信息
        QByteArray bytes = pReplay->readAll();
        return bytes;
    }
  • 相关阅读:
    poj 3258
    CodeForces 367E Sereja and Intervals
    Codeforces Round #240 (Div. 2) C Mashmokh and Numbers
    Codeforces Round #240 (Div. 2) D
    zoj 3768 Continuous Login
    2014/4/4做题感悟
    HDU 1878 欧拉回路
    HDU 3018 Ant Trip
    POJ 3694 Network
    Codeforces Round #239 (Div. 2)
  • 原文地址:https://www.cnblogs.com/xupeidong/p/10332844.html
Copyright © 2020-2023  润新知