2013-01-11 147 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。簡單的錯誤! –