首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >遵循QT5.5中的重定向

遵循QT5.5中的重定向
EN

Stack Overflow用户
提问于 2018-07-17 13:41:28
回答 1查看 1.5K关注 0票数 0

我有一个从Qt5.6中运行的程序

代码语言:javascript
复制
const QUrl qurl(url);
QNetworkRequest request(qurl);
//github redirects the request, so this attribute must be set to true, otherwise returns nothing
//from qt5.6
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
QNetworkAccessManager manager;
QNetworkReply * reply = manager.get(request);

不幸的是,这只适用于QT5.6

谁能帮我做重定向Qt5.5 (Ubuntu16.04),我想我必须遵循重定向手动,但我没有发现它的教程。

我为Qt4 -> QNetworkReply and 301 redirect找到了一个解决方案

我希望Qt5有更多的“更新”。

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-17 17:00:54

这里是我按照Qt4风格解决它的方法,就像在QNetworkReply and 301 redirect中一样。

如果有人有更好的解决方案,请张贴

代码语言:javascript
复制
    QNetworkAccessManager manager;
    QVariant possibleRedirectUrl;
    QNetworkReply * reply;

    QUrl qurl;
    qurl.setUrl(url);

    //we check if there is any redirect to follow it
    //from Qt 5.6 redirects can be automatically followed by setting
    //request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
    //here is done automatically becaus of Ubuntu 16.04 Qt version (5.5)

    do{
        qInfo() <<"Downloading " << qurl;

        QNetworkRequest request(qurl);
        reply = manager.get(request);

        qInfo() << "waiting to finish...";

        _timeout=false;
        _timer->start(timeout);

        //if download takes more time that set on timeout cancel download
        while(!_timeout){
            qApp->processEvents();
            if(reply->isFinished()) break;
        }

        _timeout = false;

        qInfo() << "finished!";

        possibleRedirectUrl = reply->attribute(QNetworkRequest::RedirectionTargetAttribute);
        qurl = possibleRedirectUrl.toUrl();
        qInfo() << qurl;

    }while(possibleRedirectUrl.isValid());
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51382939

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档