2008-08-07 39 views

Respuesta

19

He tenido un gran éxito con wsdl2php. Automáticamente creará clases de contenedor para todos los objetos y métodos usados ​​en su servicio web.

+0

Bombas que intentan analizar VMWares vimService wsdl – Tim

+0

Actualización: el enlace ha cambiado y ahora funciona, apuntando a github, por lo que los usuarios que pasan no deben omitir un enlace de trabajo debido a un comentario antiguo (muy útil, en ese momento) :) –

2

Bueno, esas características son específicas de una herramienta que está utilizando para el desarrollo en esos idiomas.

No tendría esas herramientas si (por ejemplo) estuviera usando un bloc de notas para escribir código. Entonces, tal vez deberías hacer la pregunta sobre la herramienta que estás usando.

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

9

he utilizado NuSOAP en el pasado. Me gustó porque es solo un conjunto de archivos PHP que puedes incluir. No hay nada que instalar en el servidor web y no hay opciones de configuración para cambiar. También tiene soporte WSDL, que es una ventaja.

85

En PHP 5 puede usar SoapClient en el WSDL para llamar a las funciones del servicio web. For example:

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

y $ cliente es ahora un objeto que tiene métodos de clase como se define en some.wsdl. Así que si no había un método llamado getTime en el WSDL entonces usted acaba de llamar:

$result = $client->getTime(); 

Y el resultado de eso sería (obviamente) estar en la variable $ resultado. Puede usar el método __getFunctions para devolver una lista de todos los métodos disponibles.

+0

Esto es bueno, pero para comenzar rápidamente use [wsdl2php-intérprete] (https://code.google.com/p/wsdl2php-interpreter/) –

2

Este article explica cómo puede utilizar PHP SoapClient para llamar a un servicio web api.

1

Digamos que ha proporcionado la siguiente:

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

y

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

Digamos que el acceso a http://thesite.com/ dijo que la dirección WSDL es: 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 se puede ver, los elementos especificados en el código XML se utilizan en el código PHP aunque el valor loginid se puede cambiar.

Cuestiones relacionadas