somfytahoma: Improve error logging for failed HTTP calls
The Somfy API does contain some valuable information in the reply data and the headers.
This commit is contained in:
parent
4cf1449524
commit
427d9b6b42
@ -98,8 +98,8 @@ void IntegrationPluginSomfyTahoma::confirmPairing(ThingPairingInfo *info, const
|
|||||||
info->finish(Thing::ThingErrorAuthenticationFailure, QT_TR_NOOP("Failed to activate token."));
|
info->finish(Thing::ThingErrorAuthenticationFailure, QT_TR_NOOP("Failed to activate token."));
|
||||||
});
|
});
|
||||||
connect(request, &SomfyTahomaRequest::finished, info, [this, info, username, password, token](const QVariant &result){
|
connect(request, &SomfyTahomaRequest::finished, info, [this, info, username, password, token](const QVariant &result){
|
||||||
qCDebug(dcSomfyTahoma()) << "Got token uuid" << result;
|
|
||||||
QString requestId = result.toMap()["requestId"].toString();
|
QString requestId = result.toMap()["requestId"].toString();
|
||||||
|
qCDebug(dcSomfyTahoma()) << "Got token requestId" << requestId;
|
||||||
|
|
||||||
pluginStorage()->beginGroup(info->thingId().toString());
|
pluginStorage()->beginGroup(info->thingId().toString());
|
||||||
pluginStorage()->setValue("username", username);
|
pluginStorage()->setValue("username", username);
|
||||||
|
|||||||
@ -47,7 +47,19 @@ SomfyTahomaRequest::SomfyTahomaRequest(QNetworkReply *reply, QObject *parent) :
|
|||||||
connect(reply, &QNetworkReply::finished, this, [this, reply] {
|
connect(reply, &QNetworkReply::finished, this, [this, reply] {
|
||||||
deleteLater();
|
deleteLater();
|
||||||
if (reply->error() != QNetworkReply::NoError) {
|
if (reply->error() != QNetworkReply::NoError) {
|
||||||
qCWarning(dcSomfyTahoma()) << "Request for" << reply->url().path() << "failed:" << reply->errorString();
|
int status = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
|
||||||
|
QVariantMap requestHeaders;
|
||||||
|
foreach (const QByteArray &rawHeader, reply->request().rawHeaderList()) {
|
||||||
|
requestHeaders.insert(rawHeader, reply->request().rawHeader(rawHeader));
|
||||||
|
}
|
||||||
|
QVariantMap replyHeaders;
|
||||||
|
foreach (const QByteArray &rawHeader, reply->rawHeaderList()) {
|
||||||
|
replyHeaders.insert(rawHeader, reply->rawHeader(rawHeader));
|
||||||
|
}
|
||||||
|
qCWarning(dcSomfyTahoma()).noquote() << "Request error:" << status << "for URL:" << reply->url().toString()
|
||||||
|
<< "on operation" << reply->operation() << "\n" << "Content:" << reply->readAll();
|
||||||
|
qCDebug(dcSomfyTahoma()).noquote() << "Request headers:" << QJsonDocument::fromVariant(requestHeaders).toJson()
|
||||||
|
<< "Reply headers:" << QJsonDocument::fromVariant(replyHeaders).toJson();
|
||||||
emit error(reply->error());
|
emit error(reply->error());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -56,7 +68,7 @@ SomfyTahomaRequest::SomfyTahomaRequest(QNetworkReply *reply, QObject *parent) :
|
|||||||
QJsonParseError parseError;
|
QJsonParseError parseError;
|
||||||
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &parseError);
|
QJsonDocument jsonDoc = QJsonDocument::fromJson(data, &parseError);
|
||||||
if (parseError.error != QJsonParseError::NoError) {
|
if (parseError.error != QJsonParseError::NoError) {
|
||||||
qCWarning(dcSomfyTahoma()) << "Json parse error in reply for" << reply->url().path() << ":" << parseError.errorString();
|
qCWarning(dcSomfyTahoma()) << "Json parse error:" << reply->url().toString() << ":" << parseError.error << parseError.errorString();
|
||||||
emit error(QNetworkReply::UnknownContentError);
|
emit error(QNetworkReply::UnknownContentError);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user