zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    javascript 笔记
    i18n,国际化翻译,excel与js互转
    nginx 一个端口布署多个单页应用(history路由模式)。
    html, js,css应用文件路径规则
    vue响应式原理,去掉优化,只看核心
    js 大量数据优化,通用方法
    nginx 常用的location rewrite proxy_pass
    javascript,排列组合
    zk分布式任务管理
    springboot+mybatis+dubbo+aop日志终结篇
  • 原文地址:https://www.cnblogs.com/findumars/p/4911593.html
Copyright © 2011-2022 走看看