我一直在Qt中使用SSL,在这里我需要设置特定的协议(而不是默认的“安全协议”)。看起来像这样:
QSslConfiguration config = QSslConfiguration::defaultConfiguration();
config.setProtocol(QSsl::TlsV1_0);
QSslConfiguration::setDefaultConfiguration(config);
但这使我不适应以这种全局方式设置协议,而不是在
QWebPage
或QWebView
之类的协议上进行设置。我是否遗漏了一些明显的东西,或者这真的是最好的方法吗?我知道我可以在SSL套接字上进行设置,但是我正在使用QtWebKit,并且无权访问各个套接字。 最佳答案
我发现这样做的方法是扩展QNetworkAccessManager
并在createRequest
中设置协议:
class NetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
explicit NetworkAccessManager(QObject *parent = 0);
protected:
virtual QNetworkReply * createRequest(Operation operation, const QNetworkRequest & request, QIODevice * outgoingData = 0) {
// I have no idea why request is const, but I need to change it
QNetworkRequest notConstRequest = request;
QSslConfiguration conf = notConstRequest.sslConfiguration();
conf.setProtocol(QSsl::TlsV1_0);
notConstRequest.setSslConfiguration(conf);
return QNetworkAccessManager::createRequest(operation, notConstRequest, outgoingData);
}
};
然后,可以使用
QWebpage
在我的setNetworkAccessManager
中进行设置。关于qt - 这是使用QWebPage设置SSL协议(protocol)的正确方法吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11941630/