Есть ли какой-либо инструмент для PHP, который можно использовать для генерации кода для использования веб-сервиса на основе его WSDL ? Что-то сравнимое с нажатием «Добавить веб-ссылку» в Visual Studio или плагине Eclipse, которое делает то же самое для Java.
У меня был большой успех с wsdl2php . Он автоматически создаст классы-оболочки для всех объектов и методов, используемых в вашем веб-сервисе.
В PHP 5 вы можете использовать SoapClient в WSDL для вызова функций веб-службы. Например :
$client = new SoapClient("some.wsdl");
и $ client теперь является объектом, который имеет методы класса, определенные в some.wsdl. Поэтому, если в WSDL был найден метод getTime, вы просто вызываете:
$result = $client->getTime();
И результат этого (очевидно) будет в переменной $ result. Вы можете использовать метод __getFunctions, чтобы вернуть список всех доступных методов.
Раньше я использовал NuSOAP . Мне понравилось, потому что это всего лишь набор файлов PHP, которые вы можете включить. На веб-сервере установить и установить параметры конфигурации нельзя. Он также поддерживает WSDL, который является бонусом.
Ну, эти функции специфичны для инструмента, который вы используете для разработки на этих языках.
У вас не было бы этих инструментов, если бы (например) вы использовали блокнот для написания кода. Поэтому, возможно, вам стоит задать вопрос о том, какой инструмент вы используете.
Для PHP: http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html
В этой статье объясняется, как вы можете использовать PHP SoapClient для вызова веб-службы api.
HI Я получил это с этого сайта: http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP
У веб-службы есть метод Add
который принимает два параметра:
<?php $client = new SoapClient("http://localhost/csharp/web_service.asmx?wsdl"); print_r( $client->Add(array("a" => "5", "b" =>"2"))); ?>
Скажите, что вам предоставили следующее:
<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:int="http://thesite.com/"> <x:Header/> <x:Body> <int:authenticateLogin> <int:LoginId>12345</int:LoginId> </int:authenticateLogin> </x:Body> </x:Envelope>
а также
<s:Envelope xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"> <s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <authenticateLoginResponse xmlns="http://thesite.com/"> <authenticateLoginResult> <RequestStatus>true</RequestStatus> <UserName>003p0000006XKX3AAO</UserName> <BearerToken>Abcdef1234567890</BearerToken> </authenticateLoginResult> </authenticateLoginResponse> </s:Body> </s:Envelope>
Предположим, что доступ к http://thesite.com/ сказал, что адрес WSDL: http://thesite.com/PortalIntegratorService.svc?wsdl
$client = new SoapClient('http://thesite.com/PortalIntegratorService.svc?wsdl'); $result = $client->authenticateLogin(array('LoginId' => 12345)); if (!empty($result->authenticateLoginResult->RequestStatus) && !empty($result->authenticateLoginResult->UserName)) { echo 'The username is: '.$result->authenticateLoginResult->UserName; }
Как вы можете видеть, элементы, указанные в XML, используются в PHP-коде, хотя значение LoginId может быть изменено.