Comment consommer facilement un service web à partir de PHP
Existe - t-il un outil pour PHP qui peut être utilisé pour générer du code pour consommer un service web Basé sur son WSDL? Quelque chose de comparable à cliquer sur "Ajouter une référence Web" dans Visual Studio ou le plugin Eclipse qui fait la même chose pour Java.
7 réponses
En PHP 5, vous pouvez utiliser SoapClient sur le WSDL pour appeler les fonctions du service web. Par exemple:
$client = new SoapClient("some.wsdl");
Et $client est maintenant un objet qui a des méthodes de classe telles que définies dans certains.wsdl. Donc, s'il y avait une méthode appelée getTime dans le WSDL, vous appelleriez simplement:
$result = $client->getTime();
Et le résultat de cela serait (évidemment) dans la variable $ result. Vous pouvez utiliser la méthode __getFunctions pour renvoyer une liste de toutes les méthodes disponibles.
J'ai utilisé NuSOAP dans le passé. Je l'ai aimé parce que c'est juste un ensemble de fichiers PHP que vous pouvez inclure. Il n'y a rien à installer sur le serveur web et aucune option de configuration à modifier. Il a également le support WSDL, ce qui est un bonus.
Eh bien, ces fonctionnalités sont spécifiques à un outil que vous utilisez pour le développement dans ces langues.
Vous n'auriez pas ces outils si (par exemple) vous utilisiez le bloc-notes pour écrire du code. Donc, vous devriez peut-être poser la question pour l'outil que vous utilisez.
Pour PHP: http://webservices.xml.com/pub/a/ws/2004/03/24/phpws.html
Salut, je l'ai obtenu de ce site: http://forums.asp.net/t/887892.aspx?Consume+un + ASP + NET + Web + Service + avec + PHP
Le service web a la méthode Add
qui prend deux paramètres:
<?php
$client = new SoapClient("http://localhost/csharp/web_service.asmx?wsdl");
print_r( $client->Add(array("a" => "5", "b" =>"2")));
?>
Dites que vous avez reçu ce qui suit:
<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>
Et
<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>
Disons que l'accès à http://thesite.com / dit que L'adresse WSDL est: 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;
}
Comme vous pouvez le voir, les éléments spécifiés dans le XML sont utilisés dans le code PHP bien que la valeur LoginId puisse être modifiée.