• Qt HTTP请求同步调用


    在Qt中,进行HTTP就行现在官方提倡使用QNetworkAccessManager,其和QNetworkRequest和QNetworkReply配合使用,来完成,其是只支持异步的操作。最近使用QML做些Android的小程序,需要进行HTTPS的操作,开始是使用的JS中的XMLHttpRequest,其不能使用HTTPS,我很郁闷,那只有使用C++来完成,但是又发现只支持异步,但是我希望在进行网络操作时,不要响应客户的响应,给我提示,那么如果是异步,那么请求本身就需要能够标识其操作,我想如果是同步该多好啊。
    然后就有了下面的代码

    const int TIMEOUT = (30 * 1000);
    QString Supporter::httpsPostHelp(const QString &url, const QString &data)
    {
        QString _result;
        QNetworkRequest _request;
        _request.setUrl(QUrl(url));
        QSslConfiguration _sslCon = _request.sslConfiguration();
        _sslCon.setPeerVerifyMode(QSslSocket::VerifyNone);
        _request.setSslConfiguration(_sslCon);
        _request.setHeader(QNetworkRequest::ContentTypeHeader,
                           QString("application/x-www-form-urlencoded"));
    
        QNetworkReply *_reply = m_NtwkAccManager.post(_request, data.toLatin1());
        _reply->ignoreSslErrors();
    
    
        QTime _t;
        _t.start();
    
        bool _timeout = false;
    
        while (!_reply->isFinished()) {
            QApplication::processEvents();
            if (_t.elapsed() >= TIMEOUT) {
                _timeout = true;
                break;
            }
        }
    
        if (!_timeout && _reply->error() == QNetworkReply::NoError) {
            _result = _reply->readAll();
        }
    
        _reply->deleteLater();
    
        return _result;
    
    }

    http://blog.csdn.net/zhx6044/article/details/38373687

  • 相关阅读:
    xhr单体工厂(采用分支)
    js,div垂真居中
    pycharm快捷键
    设计模式
    WebDriver API
    单元测试框架
    python操作MySQL数据库
    python读取和写入csv文件
    搭建自动化测试环境
    java中不带package和带package的编译运行方式
  • 原文地址:https://www.cnblogs.com/findumars/p/4911593.html
Copyright © 2020-2023  润新知