7

我希望能够读取以 SSL 模式从网页发送回的标头。但是,我的 Qt 应用程序无法访问网页,因为我正在收集它处于 SSL 模式?使用此连接可以在我的应用程序中使用 SSL 进行正常的 webview 浏览:

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

这抑制了 webview 中的 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 )). 只是不确定如何使用 QNetworkAccessManager 抑制/处理 SSL 错误?

4

1 回答 1

8

您需要将 QNAM 对象信号连接sslErrors(QNetworkReply *, QList<QSslError>)到您设置的插槽,QNetworkReply::ignoreSslErrors()这将允许 QNAM 继续运行。 Qt 文档就可以了

于 2013-01-11T12:06:51.517 回答