Como consumir facilmente um serviço web do PHP

votos
54

Dispõe de algum instrumento para PHP que pode ser usado para gerar código para consumir um serviço web baseado em seu WSDL ? Algo comparável ao clicar em Add Web Reference no Visual Studio ou o plugin Eclipse que faz a mesma coisa para Java.

Publicado 07/08/2008 em 06:48
fonte usuário
Em outras línguas...                            


7 respostas

votos
85

No PHP 5, você pode usar SoapClient no WSDL para chamar as funções de serviços web. Por exemplo :

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

e US $ cliente agora é um objeto que tem métodos de classe, tal como definido no some.wsdl. Portanto, se havia um método chamado getTime no WSDL, então você poderia simplesmente chamar:

$result = $client->getTime();

E o resultado de que (obviamente) ser na variável $ result. Você pode usar o método __getFunctions para retornar uma lista de todos os métodos disponíveis.

Respondeu 23/08/2008 em 19:54
fonte usuário

votos
19

Eu tenho tido grande sucesso com wsdl2php . Ele vai criar automaticamente classes de mensagens publicitárias para todos os objetos e métodos utilizados no seu serviço web.

Respondeu 15/08/2008 em 19:36
fonte usuário

votos
9

Eu tenho usado NuSOAP no passado. Eu gostei, porque é apenas um conjunto de arquivos PHP que você pode incluir. Não há nada para instalar no servidor web e há opções de configuração para mudar. Ele tem suporte a WSDL bem que é um bônus.

Respondeu 13/08/2008 em 14:54
fonte usuário

votos
2

Este artigo explica como você pode usar o PHP SoapClient chamar um serviço Web API.

Respondeu 26/07/2011 em 10:17
fonte usuário

votos
2

Bem, essas características são específicas para uma ferramenta que você está usando para o desenvolvimento nessas línguas.

Você não teria que essas ferramentas se (por exemplo) que você estava usando o bloco de notas para escrever código. Então, talvez você deve fazer a pergunta para a ferramenta que você está usando.

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

Respondeu 07/08/2008 em 08:17
fonte usuário

votos
1

Digamos que você foram fornecidos os seguintes:

<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>

e

<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>

Vamos dizer que o acesso http://thesite.com/ disse que o endereço 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;
}

Como você pode ver, os itens especificados no XML são usados ​​no código PHP que o valor LoginID pode ser alterado.

Respondeu 06/05/2016 em 09:10
fonte usuário

votos
1

HI eu tenho essa partir deste site: http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP

O serviço web tem método Addque recebe dois parâmetros:

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

     print_r( $client->Add(array("a" => "5", "b" =>"2")));
?>
Respondeu 09/09/2015 em 09:08
fonte usuário

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