2013-01-11 5 views
5

SSL 모드에서 웹 페이지에서 보낸 헤더를 읽을 수 있기를 원합니다. 내 Qt 앱은 SSL 모드에 있기 때문에 웹 페이지에 연결할 수 없습니다. SSL에서 일반 웹보기 브라우징 연결이 사용하여 내 응용 프로그램에서 가능하다 :이 웹보기에 SSL 오류를 억제SSL 오류 방지

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

그러나 나는이 방법을 사용하여 헤더의 취득 별도의 기능이 있습니다

//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이있는 config 파일을 설정하기 때문에 필요합니다. QNetworkAccessManager를 사용하여 SSL 오류를 억제/처리하는 방법을 모르십니까?

답변

7

sslErrors(QNetworkReply *, QList<QSslError>) 신호를 QNetworkReply::ignoreSslErrors() 슬롯에 연결해야 QNAM을 계속 실행할 수 있습니다. Qt Docs on it.

+0

대단히 고맙습니다. 어딘가에있는 LOL에서 중간에'reply-> ignoreSslErrors(); '를 시도 했으므로 제대로 작동하지 않았습니다. – Kal

+0

빠른 응답을 주셔서 감사합니다. @Nicholas Smith – Kal

+0

처음에는 신호를 내 보낸다는 것을 완전히 무시했다. QNAM을 생성 한 곳에서'reply-> ignoreSslErrors()'를 넣었다. 단순한 실수! –