Russian Qt Forum

Qt => Работа с сетью => Тема начата: sergek от Декабрь 06, 2014, 14:26



Название: QtSoap или ошибка сервиса
Отправлено: sergek от Декабрь 06, 2014, 14:26
Коллеги, помогите решить проблему.
Есть программа, использующая qtsoap для взаимодействия с веб-сервисом. Несколько дней назад для одного из запросов (запрос получения метки последнего обновления) вдруг начала получать от сервиса ошибку "SOAP-ENV:VersionMismatch. SOAP structure invalid. root element "html"/"html" is not envelope".

Но нерегулярно:
- при первом запуске программы запрос давал ошибку, и повторяется при повторении запроса. Первый запуск - это после перезагрузки компьютера. Стабильно можно было воспроизвести в Qt Creatore при последовательности "Очистить все/qmake/пересобрать все";
- при перезапуске программы ошибка пропадает.
Остальные функции сервиса работаю.

Я бы отнес это на кривоту реализации веб-сервиса (есть основания), но не могу объяснить, почему перезапуск программы помогает. Такое ощущение, что при первом запуске программы некорректно выполняется подгрузка dll (например, network). Но почему нет проблем с другими запросами?
В сети видел подобную проблему (http://www.qtcentre.org/threads/59390-SOAP-API-on-Qt-5-3-POST-Request-Wrong (http://www.qtcentre.org/threads/59390-SOAP-API-on-Qt-5-3-POST-Request-Wrong)), но ошибка воспроизводится на разных версиях Qt и даже на разных платформах (Win|Linux).

Коллеги, в чем может быть проблема?
Прикрепляю пример запроса к тестовому сервису, который сбоит. Проект вырезан из программы, все лишнее убрал. Если нужен полный проект, то он в свободном доступе, могу дать ссылку.
Если будет желание, сделайте так: перезагрузите комп, соберите проект и сделайте запрос - получите ошибку (я не стал обрабатывать xml, и так в теле ответа видно). Потом повторите запрос - получите нормальный ответ (длинное число, версии сервиса, выгрузки и памятки).