Intereting Posts
Как сохранить динамический XML-файл с сервера на локальный компьютер? Приложение веб-чата с использованием технологии Long-Polling с PHP, MySQL и jQuery Вытяните API-интерфейс JSON из URL-адреса и отображения в PHP Аутентификация в функциональных тестах в Symfony 2.1 Помните, что флажки отмечены на разных страницах – какой лучший способ? получить base64 php строку в тег img Функция strlen () php, задающая неправильную длину символов юникода Лучшая практика для запоминания меня имеет функцию Nginx не использует приложение подпапки сервера api (php-fpm) batik-rasterizer.jar – конвертировать svg в png Что делает CakePHP безопасным и как мы можем повысить его безопасность? Сопоставьте и замените смайлики в строке – что является наиболее эффективным способом? Динамически добавлять частное свойство к объекту Могу ли я использовать классы Magento в своем проекте? Установка демонстрационного приложения Yii 2

Отправка XML-ввода в WSDL с использованием SoapClient

У меня есть этот WSDL: https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL

Я пытаюсь использовать SoapClient для отправки запроса методу CustomerSearch .

Код, который я использую, выглядит следующим образом:

$url = 'https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL'; $client = new SoapClient($url); $CustomerSearch = array( 'AuthorID' => $authorID, 'UserID' => $userID, 'UserPassword' => $userPassword, 'Email' => $customerEmail ); $xml = array('CustomerSearch' => $CustomerSearch); $result = $client->CustomerSearch(array('xml' => $xml)); 

Когда я запускаю код, я получаю следующее исключение PHP:

 Fatal error: Uncaught SoapFault exception: [Client] SOAP-ERROR: Encoding: object has no 'any' property 

Я также попробовал это для XML:

 $xml = " <?xml version=\"1.0\" encoding=\"utf-8\"?> <CustomerSearch> <AuthorID>$authorID</AuthorID> <UserID>$userID</UserID> <UserPassword>$userPassword</UserPassword> <Email>$customerEmail</Email> </CustomerSearch> "; 

Это дает мне следующие результаты (от print_r):

 object(stdClass)#4 (1) { ["CustomerSearchResult"]=> object(stdClass)#5 (1) { ["any"]=> string(108) "-2Invalid Xml Document" } } 

В документации говорится, что входной XML должен выглядеть примерно так:

 <CustomerSearch> <AuthorID></AuthorID> <UserID></UserID> <UserPassword></UserPassword> <SearchField></SearchField> <SearchField></SearchField> <!-- ...additional SearchField elements --> </CustomerSearch> 

Я довольно новичок в Soap, и я попытался объединиться (прохождение в raw, напечатал XML) и, похоже, не может заставить это работать. Любое понимание того, что я могу делать неправильно, будет с благодарностью.

Я думаю, вам нужно больше взглянуть на документацию (в отношении any параметра). Но ваш запрос должен быть примерно таким:

 $url = 'https://secure.softwarekey.com/solo/webservices/XmlCustomerService.asmx?WSDL'; $client = new SoapClient($url); $xmlr = new SimpleXMLElement("<CustomerSearch></CustomerSearch>"); $xmlr->addChild('AuthorID', $authorID); $xmlr->addChild('UserID', $userID); $xmlr->addChild('UserPassword', $userPassword); $xmlr->addChild('Email', $customerEmail); $params = new stdClass(); $params->xml = $xmlr->asXML(); $result = $client->CustomerSearchS($params); 

EDIT : Так я сделал это в аналогичном проекте. Это может быть не самая лучшая практика. SoapVar может быть лучшим способом сделать это ( пример ANY_XML с ANY_XML ).

попробуйте передать $client->CustomerSearch($CustomerSearch); или передать строку