Qt版本为:Qt 5.4.0 MinGW 32bit && Windos7
在使用QtNetwork模块连接https网站时出现了
QSslSocket: cannot call unresolved function SSLv23_client_method
QSslSocket: cannot call unresolved function SSL_CTX_new
QSslSocket: cannot call unresolved function SSL_library_init
QSslSocket: cannot call unresolved function ERR_get_error
QSslSocket: cannot call unresolved function ERR_get_error
发现是OpenSSL的问题,去下载对应位数的OpenSSL (默认安装,一路next到底就行了,Qt一般是32位的,OpenSSL一般也是安装32位的)。
在代码方面的话,类似于下面,设置QSslConfiguration
- QNetworkRequest mRequest;
- QSslConfiguration config;
- config.setPeerVerifyMode(QSslSocket::VerifyNone);
- config.setProtocol(QSsl::SslV2);
- mRequest.setSslConfiguration(config);
1. 在qt中将http更改为https只需将
request.setUrl(QNetworkRequest(QUrl(url)));
更改如下:
QNetworkRequest request;
QSslConfiguration config;
config.setPeerVerifyMode(QSslSocket::VerifyNone);
config.setProtocol(QSsl::TlsV1SslV3);
request.setSslConfiguration(config);
request.setUrl(QUrl(url));
2.程序执行出现打印如下信息:
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
qt.network.ssl: QSslSocket: cannot call unresolved function TLSv1_client_method
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_CTX_new
qt.network.ssl: QSslSocket: cannot call unresolved function SSL_library_init
qt.network.ssl: QSslSocket: cannot call unresolved function ERR_get_error
3.拷贝D:\mingwQt\Qt5.5.0\Tools\mingw492_32\opt\bin目录下的libeay32.dll和ssleay32.dll到目录D:\mingwQt\Qt5.5.0\5.5\mingw492_32\bin下。