fix: 优化客户端错误提示和校验诊断信息
This commit is contained in:
@@ -257,12 +257,34 @@ bool DeviceIdentityHelper::ensureIssued(
|
||||
timer.stop();
|
||||
|
||||
const int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||
const QString networkError = reply->errorString();
|
||||
const QByteArray raw = reply->readAll();
|
||||
reply->deleteLater();
|
||||
if (status != 200) {
|
||||
m_error = QCoreApplication::translate("DeviceIdentityHelper", "Device identity request failed (HTTP %1): %2")
|
||||
.arg(status)
|
||||
.arg(QString::fromUtf8(raw));
|
||||
QJsonParseError responseError;
|
||||
const QJsonDocument errorDoc = QJsonDocument::fromJson(raw, &responseError);
|
||||
QString serverMessage;
|
||||
if (responseError.error == QJsonParseError::NoError && errorDoc.isObject()) {
|
||||
const QJsonValue detail = errorDoc.object().value(QStringLiteral("detail"));
|
||||
serverMessage = detail.isObject()
|
||||
? detail.toObject().value(QStringLiteral("msg")).toString()
|
||||
: detail.toString();
|
||||
}
|
||||
if (serverMessage.isEmpty())
|
||||
serverMessage = QString::fromUtf8(raw).trimmed();
|
||||
|
||||
if (status == 0) {
|
||||
m_error = QCoreApplication::translate(
|
||||
"DeviceIdentityHelper",
|
||||
"Cannot contact the update server to issue device identity.\nServer: %1\nApp: %2\nChannel: %3\nNetwork error: %4\nTimeout: %5 ms")
|
||||
.arg(trimmedBaseUrl, appId, channel, networkError, QString::number(timeoutMs));
|
||||
} else {
|
||||
m_error = QCoreApplication::translate(
|
||||
"DeviceIdentityHelper",
|
||||
"Device identity request was rejected by the update server.\nServer: %1\nHTTP status: %2\nApp: %3\nChannel: %4\nServer message: %5")
|
||||
.arg(trimmedBaseUrl, QString::number(status), appId, channel,
|
||||
serverMessage.isEmpty() ? QCoreApplication::translate("DeviceIdentityHelper", "<empty response>") : serverMessage);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user