Qt5 SSL支持

时间:2014-12-30 16:46:33

标签: c++ qt ssl network-programming

我即将发出网络API请求:

QNetworkAccessManager networkManager
QUrlQuery urlQuery;
urlQuery.setQuery("https://lalala.com/login");
urlQuery.addQueryItem("submit", "");
urlQuery.addQueryItem("email", "email@email.com");
urlQuery.addQueryItem("pass", "unbelievable_password");
QNetworkRequest request;
request.setUrl(QUrl(urlQuery.query()));

QNetworkReply* reply = networkManager.get(request);

const QString jsonDataString = (QString) reply->readAll();

问题是我在执行此代码时有以下输出:

QSslSocket: cannot resolve TLSv1_1_client_method
QSslSocket: cannot resolve TLSv1_2_client_method
QSslSocket: cannot resolve TLSv1_1_server_method
QSslSocket: cannot resolve TLSv1_2_server_method
QSslSocket: cannot resolve SSL_select_next_proto
QSslSocket: cannot resolve SSL_CTX_set_next_proto_select_cb
QSslSocket: cannot resolve SSL_get0_next_proto_negotiated
QSslSocket: cannot call unresolved function SSL_get0_next_proto_negotiated

我的.pro - 文件包含libs定义:LIBS += -lcrypto -lssl,但它的存在不会改变任何内容。

致电QSslSocket::supportsSsl()返回1

执行openssl version会返回OpenSSL 0.9.8za 5 Jun 2014

系统为Mac OS X Yosemite,Qt版本为5.4.0

如何拨打https电话?即使我打电话给根本不需要任何SSL的http://ip.jsontest.com,这些错误也会存在。

1 个答案:

答案 0 :(得分:1)

很可能你必须安装新版本的OpenSSL。