2013-01-11 131 views
5

我希望能够读取SSL模式下从网页发回的标头。但是,我的Qt应用无法访问网页,因为它处于我正在收集的SSL模式中?在SSL普通网页视图浏览可以在我的应用程序使用此连接:抑制SSL错误

connect(view->page()->networkAccessManager(), SIGNAL(sslErrors(QNetworkReply*, const QList<QSslError> &)), 
         this, SLOT(onSslErrors(QNetworkReply*, const QList<QSslError> &))); 

这抑制了网页视图的SSL错误,但我有一个单独的函数,它得到的使用这种方法的标题:

//Send a request to validate URL 
QNetworkAccessManager *manager = new QNetworkAccessManager(this); 
QNetworkRequest request; 
request.setUrl(QUrl(text)); 
request.setRawHeader("User-Agent", "MyApp1.0"); 
request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded"); 
        QNetworkReply *reply = manager->get(request); 
QEventLoop loop; 
connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); 
loop.exec(); 

qDebug() << "QLoop: " << reply->rawHeader("My-Application"); 
    if(reply->rawHeader("My-Application") == "1"){ 
     appUrl = text; 
    } 

我需要这种方法,因为我在应用程序使用webview->load(QURL(appUrl))连接到它之前设置了一个带有我们的webapps URL的配置文件。只是不确定如何使用QNetworkAccessManager抑制/处理SSL错误?

回答

7

您需要将您的QNAM对象信号sslErrors(QNetworkReply *, QList<QSslError>)连接到您设置QNetworkReply::ignoreSslErrors()的插槽,并且这将允许QNAM继续运行。 Qt Docs on it

+0

非常感谢,我试过'reply-> ignoreSslErrors();'在中间的某个地方哈哈,它没有工作,所以我会给你的方法去:) – Kal

+0

工作,感谢您的快速回复@Nicholas史密斯 – Kal

+0

没有麻烦,我第一次尝试它,我完全忽略了信号被发射,并把'reply-> ignoreSslErrors()'我创建了QNAM。简单的错误! –