Domanda

È disponibile uno strumento per PHP che può essere utilizzato per generare codice per consumare a servizio web in base al suo WSDL?Qualcosa di paragonabile al fare clic su "Aggiungi riferimento Web" in Visual Studio o nel plug-in Eclipse che fa la stessa cosa per Java.

È stato utile?

Soluzione

Ho avuto un grande successo con wsdl2php.Creerà automaticamente classi wrapper per tutti gli oggetti e i metodi utilizzati nel tuo servizio web.

Altri suggerimenti

In PHP 5 puoi usare SoapClient sul WSDL per chiamare le funzioni del servizio web. Per esempio:

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

e $client è ora un oggetto che dispone di metodi di classe come definiti in some.wsdl.Quindi, se ci fosse un metodo chiamato getTime nel WSDL, dovresti semplicemente chiamare:

$result = $client->getTime();

E il risultato sarebbe (ovviamente) nella variabile $risultato.È possibile utilizzare il metodo __getFunctions per restituire un elenco di tutti i metodi disponibili.

ho usato NuSOAP nel passato.Mi è piaciuto perché è solo un insieme di file PHP che puoi includere.Non c'è niente da installare sul server web e nessuna opzione di configurazione da modificare.Ha anche il supporto WSDL, il che è un vantaggio.

Questo articolo spiega come utilizzare PHP SoapClient per chiamare un servizio Web API.

Bene, queste funzionalità sono specifiche per uno strumento che stai utilizzando per lo sviluppo in quelle lingue.

Non avresti questi strumenti se (ad esempio) utilizzassi il blocco note per scrivere codice.Quindi, forse dovresti porre la domanda per lo strumento che stai utilizzando.

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

Ciao, ho preso questo da questo sito: http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP

Il servizio web ha un metodo Add che accetta due parametri:

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

     print_r( $client->Add(array("a" => "5", "b" =>"2")));
?>

Supponiamo che ti sia stato fornito quanto segue:

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

Diciamo che accedendo http://thesite.com/ detto che l'indirizzo 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;
}

Come puoi vedere, gli elementi specificati nell'XML vengono utilizzati nel codice PHP sebbene il valore LoginId possa essere modificato.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top