Как исправить: «QNetworkReply :: SslHandshakeFailedError» на устройстве Android - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь получить доступ к Серверу с помощью 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...