PHP SOAP

Что-то одно PHP SOAP или Perl SOAP::Lite — делала ключница. Простая задача: общаются две программы, клиент на PHP, используется модуль SOAP и сервер на Perl, используется SOAP::Lite.

В режиме XML-RPC Perl отвечает «Неверная версия» (SOAP::Lite поддерживает только 1.1), попытки установить версию со стороны PHP (есть специальные константы SOAP_1_1 и SOAP_1_2) ни к чему не приводят, в режиме document ещё хуже — PHP начинает плеваться совершенно невразумительными сообщениями об ошибках из разряда «моя нога кефир валяться», т.е. все слова знакомые, но что бы это значило… Мануал ничего не проясняет, интернет молчит, примеры из руководства не работают. Шаманскими плясками (например, я нашёл в исходниках параметр soap_action) удалось заставить PHP замолчать, но тут уже возмущается Perl — говорит, что доступ к методу запрещён.

Есть ещё nuSOAP (написанный на чистом PHP), но этот монстр занимает более полуметра. В общем, выкинул всё, взял cURL и SimpleXML. Сам запрос — 40 строк, ещё примерно столько же — разбор ответа через SimpleXML, меньше сотни строк. Так и живём.
23 июня 2008 12:57

gaius-julius.livejournal.com (gaius-julius.livejournal.com)
23 июня 2008, 13:31

если в итоге получилось на голом курле+хмл, то зачем изначально было брать навороченный соап? Есть же, например, XML-RPC.

Правда, в большинство его реализаций на php внутрь тоже лучше не заглядывать (для сохранения душевного равновесия)

bolk (bolknote.ru)
23 июня 2008, 14:30, ответ предназначен gaius-julius.livejournal.com:

Из «голого Curl+XML» я как раз SOAP и сделал. SOAP — XML-протокол поверх HTTP (в нашем случае — HTTPS с сертификатом).

Артём Курапов (kurapov.name)
23 июня 2008, 15:22

'trace' => 1 с отслеживанием xml ответов не помогает?

bolk (bolknote.ru)
23 июня 2008, 15:27, ответ предназначен Артём Курапов (kurapov.name):

Включено, без этого вообще труба была бы. Не помогает.

melash.livejournal.com (melash.livejournal.com)
23 июня 2008, 16:07

Вот тут пример работы SOAP между perl и php:
http://sonettic.com.ua/max/perl-php-soap.htm

Выложил специально, как-то не получилось сюда написать.

bolk (bolknote.ru)
23 июня 2008, 17:18, ответ предназначен melash.livejournal.com:

Perl-скрипт делают другие люди.

Сейчас мы договорились вообще убрать SOAP, используем REST + WDDX.

gaius-julius.livejournal.com (gaius-julius.livejournal.com)
24 июня 2008, 09:31

весь soap в 100 строк пхп? круто.

bolk (bolknote.ru)
24 июня 2008, 11:27, ответ предназначен gaius-julius.livejournal.com:

Он не весь, сильно упрощён, нам же под конкретные задачи.

gaius-julius.livejournal.com (gaius-julius.livejournal.com)
24 июня 2008, 17:09, ответ предназначен bolk (bolknote.ru):

а, ну под конкретные-то ладно.

norguhtar.livejournal.com (norguhtar.livejournal.com)
1 июня 2009, 08:57

Как выяснилось PHP SOAP делала ключница :)

Для того чтобы SOAP::Lite заработал надо добавить перед вызовом методов с сервера, выставить префиксы которые понимает PHP SOAP:
$service->envprefix('SOAP-ENV');

После чего эта зараза таки начинает работать.

melloist.ya.ru (melloist.ya.ru)
26 июня 2009, 14:18

Для того чтобы SOAP::Lite заработал надо добавить перед вызовом методов с сервера, выставить префиксы которые понимает PHP SOAP:
$service->envprefix('SOAP-ENV');

Вот за это огромнейшее спасибо! (почти со слезами на глазах)
Три дня головой об стену бился гадая почему не работает ничего :)

Ваше имя или адрес блога (можно OpenID):

Текст вашего комментария, не HTML:

Кому бы вы хотели ответить (или кликните на его аватару)