Передача объекта в веб-сервис .NET через PHP SoapClient - PullRequest
0 голосов
/ 13 июня 2009

Моя компания публикует набор веб-сервисов .NET, доступных через SOAP. Мне нужно привязать свое PHP-приложение к ним, но я столкнулся с проблемой, для которой не могу найти решение. Одна из служб, к которой мне нужно получить доступ, имеет подпись Advertiser CreateAdvertiser ( Advertiser advertiser ).

Как я могу передать экземпляр объекта, которого у меня нет (Рекламодатель)? Я пытался создать экземпляр stdClass() и назначить необходимые свойства .NET Advertiser, но это не сработало. Каким-то образом мне нужно составить объект, который служба распознает, и передать его. Есть идеи, как это сделать?

Конечно, я использую класс SoapClient для PHP.

Очень ценится.

ОБНОВЛЕНИЕ: После долгих проб и ошибок я наконец обнаружил, что первая часть проблемы заключается в том, что не передаются никакие параметры - ни простые скаляры, ни сложные типы. Я попытался использовать именованные параметры: array ( 'name1' => 'val1', 'name2' => 'val2' ) и без имени, но дамп __getLastRequest показывает пустой вызов метода:

...<SOAP-ENV:Body><ns1:CreateAdvertiser/></SOAP-ENV:Body>...

Мне нужно решить эту проблему, прежде чем беспокоиться о следующей, я думаю.

Ответы [ 2 ]

2 голосов
/ 07 июля 2009

Таким образом, ответ здесь, по крайней мере, на услуги, которые я пытаюсь вызвать, прост и болезнен. Это просто включает в себя много массивов.

$user = AdvertiserProxy->CreateAdvertiser ( 
   array (
      'advertiser' => array (
         'Name' => 'Advertiser Name',
         'IndustryCodeList' => array (
            'Agency',
            'Fortune 500'
         )
      )
   )
);

"1004 *" "объект" - это просто сумма его частей.

0 голосов
/ 13 июня 2009

Я должен был сделать это один раз. У клиента, использующего PHP, возникли проблемы с использованием веб-службы. (он использовал NuSoap, я думаю) Я использовал Fiddler, чтобы понять, как работает XML. Как только мы узнали это, он мог собрать xml, добавить мыльный конверт, настроить заголовок длины контента и успешно отправить.

Слишком легко создать веб-сервис, который не может использовать PHP или Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...