Как проверить, работает ли webservice, используя Qt

Я написал некоторый код для мониторинга веб-службы SOAP. В основном он использует QNetworkAccessManager для отправки HTTP-запроса GET на адрес веб-службы, и если я получу ответ, я знаю, что служба работает. Я думал, что это работает, но время от времени (раз в пару дней) я получаю уведомление о том, что сервер не работает, а затем в следующий раз, когда он проверяет, что он снова работает. Таким образом, сервер на самом деле не отключается, что-то происходит с запросом. Мне было интересно, если есть лучший способ для мониторинга веб-службы, ниже приведен псевдокод, чтобы показать вам, что я сделал:

main{
Qtimer timer;
connect(timer, SIGNAL(timeout()), this, SLOT(send()));
timer.start(300000);
}

send(){
QNetworkAccessManager *qnam;
connect(qnam, SIGNAL(finished(QNetworkReply*)), this, SLOT(requestFinished(QNetworkReply*));
qnam.get("https://testWebservice.com/TEST/webservice");
}

requestFinished(QNetworkReply *reply){
QByteArray data = reply.getData();
if(reply.error == some sort of error indicating server is down, or if reply == empty){
***SERVER DOWN***
}
else{
***SERVER UP***
}
}

РЕДАКТИРОВАТЬ
изменил если условие включения проверки ошибок

1

Решение

Проверка того, является ли содержимое сетевого ответа пустым, чтобы убедиться, что веб-сервис не работает, не кажется мне хорошим решением в общем случае.

Я бы предложил использовать QNetworkReply::error() метод, чтобы проверить, происходит ли ошибка.
увидеть http://doc.qt.digia.com/qt/qnetworkreply.html#error для деталей.

ОБНОВИТЬ
Не упоминается, как получаются данные ответа QNetworkReply объект. Я предполагаю, что что-то вроде QIODevice::readAll/read() используется. Если так, то пустой ответ на данные не означает, что произошла ошибка на стороне сервера. Смотрите, например http://doc.qt.digia.com/qt/qiodevice.html#readAll

Когда нет сетевой ошибки, но данные ответа неожиданно пусты, я бы предположил, что веб-сервис работает, но что-то идет не так с обработкой запросов на стороне веб-сервиса или с передачей запросов / ответов.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector