Как легко использовать веб-сервис на PHP
-
08-06-2019 - |
Вопрос
Доступен ли какой-либо инструмент для PHP, который можно использовать для генерации кода для использования веб-сервис основываясь на его WSDL?Что-то сравнимое с нажатием кнопки "Добавить веб-ссылку" в Visual Studio или плагине Eclipse, который делает то же самое для Java.
Решение
Я добился большого успеха в wsdl2php.Он автоматически создаст классы-оболочки для всех объектов и методов, используемых в вашем веб-сервисе.
Другие советы
В PHP 5 вы можете использовать Мыльный клиент в WSDL для вызова функций веб-службы. Например:
$client = new SoapClient("some.wsdl");
и $client теперь является объектом, который имеет методы класса, определенные в some.wsdl.Итак, если бы в WSDL был метод с именем getTime, вы бы просто вызвали:
$result = $client->getTime();
И результат этого (очевидно) был бы в переменной $result.Вы можете использовать метод __getFunctions, чтобы вернуть список всех доступных методов.
Я использовал NuSOAP ( НуСОАП ) в прошлом.Мне это понравилось, потому что это всего лишь набор PHP-файлов, которые вы можете включить.На веб-сервере нечего устанавливать, и никаких параметров конфигурации для изменения нет.Он также имеет поддержку WSDL, что является бонусом.
Это Статья объясняет, как вы можете использовать PHP SoapClient для вызова веб-службы api.
Что ж, эти функции специфичны для инструмента, который вы используете для разработки на этих языках.
У вас не было бы этих инструментов, если бы (например) вы использовали notepad для написания кода.Итак, возможно, вам следует задать вопрос относительно инструмента, который вы используете.
Для PHP: http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html
ПРИВЕТ, я получил это с этого сайта : http://forums.asp.net/t/887892.aspx ?Использовать +ASP+ NET+ Веб+сервис+с+ 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 может быть изменено.