Произвольный ответ на соап запрос, заглушка вместо настоящего ответа поставщика.

Добрый день/вечер!
В проекте получает соап ответы от поставщика и в тестовой среде не всегда можем добиться нужного нам ответа, нужна возможность самому ручками набрасать фейковый ответ от поставщика.
Пытался прямо в коде вместо $stdResponse = ChildSoapClass:__soapCall($method, $requestData); подставить ответ, но не получилось xml файл преобразовать в правильный стд обьект, с которым программа могла бы корректно работать дальше.
Возможно лучше стоит создать фейковый сервер который возвращает всегда 1 нужный нам ответ, а в коде просто менять путь для запроса. Но я не делал своих соап серверов, я не уверен что так можно сделать (не зависимо от запроса выдавать какой то заранее собранный ответ), там же надо создавать какой то wsdl файл который описывал бы сервер (который еще валидирует запрос, если я правильно понял).

Можете мне что то посоветовать в такой ситуации? что гуглить?
я почему то в гугле не нашел ничего подобного, хотя мне кажется вопрос актуальный, я давно такую штуку хочу… Для джсона вроде полегче с этим… а вот на соапе не знаю как.
Заранее спасибо.

“Create basic(simple etc) soap server php” :

http://www.sitepoint.com/web-services-with-php-and-soap-1/
https://gist.github.com/elvisciotti/4586286
http://www.ibm.com/developerworks/opensource/tutorials/os-php-webservice/

и еще миллионы ссылок, что конкретно не получается?

Ну… я опыта не особо много имею в этом деле. Сейчас сделал по примеру из указанных ссылок, тестовый клиент хорошо получает ответ от тестового сервера. Попробовал рабочий проект переключить на мой тестовый сервер для выдавания заглушек. В итоге у меня все сфейлилось из-за валидации(?)
SoapFault exception: [WSDL] SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://nemotest/server/soapServer.php’ : Start tag expected, ‘<’ not found
Ну как бы да, в своем фейк сервере не делал всдл, в первом посте я высказал свои переживания на эту тему, что из-за всдл не пройдет валидация запроса.

возможно я смог бы скопировать(когда в браузере открываешь адрес куда идут запросы, там всдл схема) всдл рабочего сервера и поставить ее на фейковый сервер… надо поискать как это делается (ставится всдл на сервер) мб получится.

а вручную http://nemotest/server/soapServer.php отдает валидный ответ? И вообще отдает хоть что-то? скиньте что не проходит валидацию?

Реализацию простого сервера взял тут HelloServer.php - First SOAP Server Application

И вообще отдает хоть что-то?

Отдает ‘hello’, потом я загрузил бы мне нужную хмл. Но когда я отправляю запрос с реального проекта на этот сервер, то происходит ошибка, которую указал выше, в этом реальном запросе просто набор данных в хмл формате, обычный соап запрос

Судя по ошибке ‘<’ сервер вообще не готов что либо адекватное принимать, кроме тестовой штуки с ссылки которая выше.

SoapUI умеет генерить заглушку, возвращающую ответ в зависимости от посланного запроса.

1 лайк

А если использовать мок из SoapUI? Getting Started with SOAP Mocking | SoapUI

1 лайк