Я пытаюсь получить доступ к Серверу с помощью QNetworkAccessManager и QNetworkRequest и получаю сообщение об ошибке: QNetworkReply :: SslHandshakeFailedError на устройстве Android.
Я уже скомпилировал библиотеку OpenSSL для Android и добавил библиотеку в свой Qtпроект [https://github.com/ekke/android-openssl-qt]
Я использую Qt 5.12, Andoird NDK 19, Android API 26
Я добавил следующую конфигурацию ssl:
sslConf = QSslConfiguration::defaultConfiguration();
sslConf.setProtocol(QSsl::AnyProtocol);
sslConf.setPeerVerifyMode(QSslSocket::VerifyNone);
sslConf.setCaCertificates({});
QSslConfiguration::setDefaultConfiguration(sslConf);
netAccessManager.setStrictTransportSecurityEnabled(false);
Попробуйте получить ответ:
QNetworkRequest nr;
nr.setSslConfiguration(this->sslConf);
nr.setUrl(QUrl("https://myserver.com/services/abc"));
//HTTP Basic authentication header value: base64(username:password)
QString concatenated = username + ":" + pw;
QByteArray data = concatenated.toLocal8Bit().toBase64();
QString headerData = "Basic " + data;
nr.setRawHeader("Authorization", headerData.toLocal8Bit());
QNetworkReply *reply = netAccessManager.get(nr);
reply->ignoreSslErrors();
QObject::connect(reply, SIGNAL(sslErrors(const QList<QSslError>)),
this, SLOT(sslError(const QList<QSslError>)));
Код отлично работает в Linux, а в Linux появляется ошибка: QNetworkReply :: SslHandshakeFailedError.