Android 8.0发布后,我们的QT App在使用此新版本的设备上无法正常运行。我们在模拟器中看到的错误是“创建SSL上下文()时出错”。该应用程序正常运行,但当它尝试进行HTTP调用时,它会失败。
我们在AndroidManifest中有这一行:
<uses-sdk android:minSdkVersion="16" android:targetSdkVersion="23"/>
我有时试图更改此targetSdkVersion,但没有任何效果。
此外,我们使用此函数进行HTTP调用
void UrlLoader::load()
{
this->setProperty("loading", true);
QNetworkRequest request;
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/x-www-form-urlencoded");
request.setUrl(m_url);
QUrlQuery postData;
if(params() != "") {
QStringList pieces = params().split( "&" );
foreach(QString value, pieces) {
QStringList values = value.split( "=" );
postData.addQueryItem(values[0], values[1]);
}
}
m_netMan->post(request, postData.toString(QUrl::FullyEncoded).toUtf8());
}
当我们尝试读取结果时会显示错误:
void UrlLoader::finished(QNetworkReply *reply)
{
this->setProperty("loading", false);
QJsonArray jsonArray;
QJsonObject json;
int error = reply->error();
if(error == 0){
QByteArray rawData = reply->readAll();
if(QJsonDocument::fromJson(rawData).isArray()) {
jsonArray = QJsonDocument::fromJson(rawData).array();
emit this->loadedArray(jsonArray);
} else {
json = QJsonDocument::fromJson(rawData).object();
if(json.empty()){
this->setResponse(rawData);
}
emit this->loaded(json);
}
reply->abort ();
} else {
emit this -> crashed(this -> retornaError(error)) ;
}
}
有人可以帮助我们吗? 最诚挚的问候。