Сведения о вопросе

1234123213

16:03, 1st July, 2020

Теги

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

Просмотров: 463   Ответов: 7

Существует ли какой-либо инструмент для PHP, который можно использовать для генерации кода для использования веб-службы на основе ее WSDL ? Что-то сравнимое с щелчком "Add Web Reference" в Visual Studio или плагином Eclipse, который делает то же самое для Java.



  Сведения об ответе

$DOLLAR

18:03, 1st July, 2020

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

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

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

$result = $client->getTime();

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


  Сведения об ответе

lesha

18:03, 1st July, 2020

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


  Сведения об ответе

pumpa

18:03, 1st July, 2020

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


  Сведения об ответе

9090

18:03, 1st July, 2020

В этой статье объясняется, как можно использовать PHP SoapClient для вызова веб-службы api.


  Сведения об ответе

KOMP

18:03, 1st July, 2020

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

У вас не было бы этих инструментов, если бы (например) вы использовали блокнот для написания кода. Поэтому, возможно, вам следует задать вопрос для инструмента, который вы используете.

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


  Сведения об ответе

repe

18:03, 1st July, 2020

Привет я получил это с этого сайта: http://forums.asp.net/t/887892.aspx?Потреблять+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")));
?>


  Сведения об ответе

PHPH

18:03, 1st July, 2020

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

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


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться