【发布时间】:2017-11-23 20:29:06
【问题描述】:
Android 8.0 发布后,我们的 QT 应用程序无法在使用此新版本的设备上正常运行。我们在模拟器中看到的错误是“错误创建 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)) ;
}
}
有人可以帮助我们吗? 最好的问候。
【问题讨论】:
-
只是补充一下,对于 android 7 (android sdk 25) 一切正常,该问题仅在 android 8 (android sdk 26) 中出现