Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Замена ответа SOAP-сервера
Но такой ответ не нужен. Надо выдавать другой ответ. Причем готовый ответ уже есть в виде xml-файла. Как это сделать?
Vladimir Kheifets
Отправлено: 01 Августа, 2017 - 20:24:09
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
Добрый вечер!
Из того, что Вы показали виден только один метод sendResponse($prefix),
который всгда возвращает array("status" => "0")
Клиент выглядет примерно так?
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2017
Помог: 0 раз(а)
Какой клиент я не знаю, так как к серверу будет подключаться, в принципе, неизвестно кто. Пусть будет такой клиент, какой Вы предложили. Требуется, чтобы сервер выдал ответ с тегом header, который очень сложен чтобы формировать его программно на php. Есть готовый ответ (образец в виде xml-файла), в нем средствами php можно подправить несколько тегов. Но как отправить этот отредактированный образец вместо ответа сервера, приведенного в начале темы я не знаю. Есть ли такая возможность?
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
ilya73 пишет:
Какой клиент я не знаю, так как к серверу будет подключаться, в принципе, неизвестно кто. Пусть будет такой клиент, какой Вы предложили. Требуется, чтобы сервер выдал ответ с тегом header, который очень сложен чтобы формировать его программно на php. Есть готовый ответ (образец в виде xml-файла), в нем средствами php можно подправить несколько тегов. Но как отправить этот отредактированный образец вместо ответа сервера, приведенного в начале темы я не знаю. Есть ли такая возможность?
Обычно все Веб-сервисы дают клиентам документацию, в которой можно найти описание requests-response, схемы и описание методов.
Сервис должны обслуживать запросы и для каждого типа запросов должен быть разработан соответствующий метод, который, например, что-то выбирает из БД, обрабатывает данные и возвращает responsе.
В Вашем случае должен быть метод, который должен что-то сделать с шаблоном.
Чтобы было понятнее, Вы можете посмотреть, демо-версию SOAP Веб-сервиса
демо: https://www[dot]alto-booking[dot]com/dem[dot][dot][dot]/SOAP/client.php
описание методов: https://www[dot]alto-booking[dot]com/dem[dot][dot][dot]_AltoBooking[dot]pdf
исходный код клиента:
https://www.alto-booking.com/demo/SOAP/DemoClient.zip
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2017
Помог: 0 раз(а)
Абсолютно с Вами согласен. Обычно так и построены web-сервисы.
Но web-сервис, которым я занимаюсь, может отвечать однозначно на все запросы с параметром status=0, только в ответе нужно заменить содержимое тега <a:RelatesTo> и тега <a:MessageID>. С этим я справлюсь. Все остальное остается неизменным.
Но как «загнать» в ответ следующий текст?
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
ilya73 пишет:
Абсолютно с Вами согласен. Обычно так и построены web-сервисы.
Но web-сервис, которым я занимаюсь, может отвечать однозначно на все запросы с параметром status=0, только в ответе нужно заменить содержимое тега <a:RelatesTo> и тега <a:MessageID>. С этим я справлюсь. Все остальное остается неизменным.
Но как «загнать» в ответ следующий текст?
Доброе утро!
Вы разрабатываете SOAP Web-сервис. Верно? https://habrahabr[dot]ru/post/187390/
Вы написали:
“Какой клиент я не знаю, так как к серверу будет подключаться, в принципе, неизвестно кто.”
Кто не известно, но известно как, - по протоколу SOAP, поддерживающему удалённый вызов процедур с сервера на стороне клиента.
В Вашем случае, это процедура sendResponse, которая должна возвращать, например, массив с элементами status, RelatesTo, MessageID ....
Честно говоря, не понятно, зачем "отвечать однозначно на все запросы с параметром status=0".
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2017
Помог: 0 раз(а)
Возможно я не совсем корректно выразился:
ilya73 пишет:
Какой клиент я не знаю, так как к серверу будет подключаться, в принципе, неизвестно кто.
Да, клиент будет такой:
Vladimir Kheifets пишет:
по протоколу SOAP, поддерживающему удалённый вызов процедур с сервера на стороне клиента.
Но какая именно реализация этого клиента я не знаю.
Мой SOAP web-сервис на запрос клиента должен ответить именно так, как написано в образце.
Status=0 в случае успеха, в ином случае ответ будет другим, но на данном этапе это не важно.
Важно то, как "загнать" все это нагромождение xml-кода в ответ сервера. Ведь там нужно вычислить хэш, каноникализировать текст, создать ЭЦП на основе сертификата. Делать это на основе php нереально. Да и зачем, если это статичный текст, он меняться не будет.
А вот как отправить этот текст клиенту, к сожалению, пока ответа нет.
Vladimir Kheifets
Отправлено: 03 Августа, 2017 - 12:14:47
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
ilya73 пишет:
Мой SOAP web-сервис на запрос клиента должен ответить именно так, как написано в образце.
Status=0 в случае успеха, в ином случае ответ будет другим, но на данном этапе это не важно.
Важно то, как "загнать" все это нагромождение xml-кода в ответ сервера. Ведь там нужно вычислить хэш, каноникализировать текст, создать ЭЦП на основе сертификата. Делать это на основе php нереально. Да и зачем, если это статичный текст, он меняться не будет.
А вот как отправить этот текст клиенту, к сожалению, пока ответа нет.
2. как "загнать" все это нагромождение xml-кода в ответ сервера...
Это ответ на Ваш вопрос:
"SOAP – протокол используемый для реализации удаленного вызова процедур и в качестве транспорта он использует XML!".
источник https://habrahabr[dot]ru/post/187390/
ilya73
Отправлено: 03 Августа, 2017 - 13:27:51
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2017
Помог: 0 раз(а)
Vladimir Kheifets пишет:
я полагал, что речь идёт о реализации протокола SOAP на PHP.
Именно так. Нужна реализация web-сервиса на основе SOAP.
Vladimir Kheifets пишет:
"SOAP – протокол используемый для реализации удаленного вызова процедур и в качестве транспорта он использует XML!".
Не понял. Возможно или нет?
ilya73
Отправлено: 07 Августа, 2017 - 10:43:59
Новичок
Покинул форум
Сообщений всего: 8
Дата рег-ции: Авг. 2017
Помог: 0 раз(а)
Если возможно, то как это реализовать?
Vladimir Kheifets
Отправлено: 07 Августа, 2017 - 15:59:43
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017 Откуда: Германия, Бавария
Помог: 37 раз(а)
ilya73 пишет:
Если возможно, то как это реализовать?
Добрый день! Такой "необычный" SOAP Веб-Сервис я не разрабатывал и у меня нет возможности экспериментировать с Вашей задачей. Свою реализацию с исходными кодами я Вам показал.
Необычное в Вашем SOAP Веб-Сервисе то, что необходимо отправлять клиенту конкретный XML-Respose.
Причём, как Вы пишете, необходимо модифицировать в Header содержимое тега <a:RelatesTo> и тега <a:MessageID>
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.