Как легко потреблять веб-сервис из PHP

голоса
54

Есть ли какой - либо инструмент доступен для PHP , который может быть использован для генерации кода для потребляющих веб - сервиса , основанного на его WSDL ? Что сравнимо с нажав на кнопку «Добавить веб - ссылки» в Visual Studio или Eclipse , плагин , который делает то же самое для Java.

Задан 07/08/2008 в 06:48
источник пользователем
На других языках...                            


7 ответов

голоса
85

В PHP 5 можно использовать SoapClient на WSDL для вызова функций веб - службы. Например :

$client = new SoapClient("some.wsdl");

и $ клиент теперь объект, который имеет методы класса, как это определено в some.wsdl. Так что если есть метод, называемый GetTime в WSDL, то вы бы просто позвонить:

$result = $client->getTime();

И результат этого будет (очевидно) быть в переменных $ результата. Вы можете использовать метод __getFunctions возвращает список всех доступных методов.

Ответил 23/08/2008 в 19:54
источник пользователем

голоса
19

Я имел большой успех с wsdl2php . Она будет автоматически создавать классы - оболочки для всех объектов и методов , используемых в веб - службы.

Ответил 15/08/2008 в 19:36
источник пользователем

голоса
9

Я использовал NuSOAP в прошлом. Мне понравилось, потому что это просто набор PHP - файлов , которые можно включить. Там нет ничего , чтобы установить на веб - сервере и не конфигурационных опций для изменения. Он поддерживает WSDL, а которая бонус.

Ответил 13/08/2008 в 14:54
источник пользователем

голоса
2

Эта статья объясняет , как вы можете использовать PHP SoapClient для вызова API веб - сервиса.

Ответил 26/07/2011 в 10:17
источник пользователем

голоса
2

Ну, эти функции являются специфическими для инструмента, который вы используете для развития этих языков.

Вы бы не эти инструменты, если (например) вы с помощью блокнота, чтобы написать код. Так, может быть, вы должны задать вопрос для инструмента, который вы используете.

Для PHP: http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html

Ответил 07/08/2008 в 08:17
источник пользователем

голоса
1

Допустим, вы были предоставлены следующие:

<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 может быть изменено.

Ответил 06/05/2016 в 09:10
источник пользователем

голоса
1

HI Я получил это с этого сайта: http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP

Веб - сервис имеет метод , Addкоторый принимает два Params:

<?php
    $client = new SoapClient("http://localhost/csharp/web_service.asmx?wsdl");

     print_r( $client->Add(array("a" => "5", "b" =>"2")));
?>
Ответил 09/09/2015 в 09:08
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more