Pregunta

Hay disponible ninguna herramienta para PHP que puede ser usado para generar el código para el consumo de una servicio web basado en su WSDL?Algo comparable al hacer clic en "Agregar Referencia Web" en Visual Studio o Eclipse plugin que hace lo mismo para Java.

¿Fue útil?

Solución

He tenido un gran éxito con wsdl2php.Automáticamente crear clases contenedoras para todos los objetos y los métodos utilizados en el servicio web.

Otros consejos

En PHP 5, se puede utilizar SoapClient en el WSDL para llamar al servicio web funciones. Por ejemplo:

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

y $cliente es ahora un objeto que tiene los métodos de la clase como se define en algunos.wsdl.Entonces, si hay un método llamado getTime en el WSDL, solo tienes que llamar:

$result = $client->getTime();

Y el resultado de que (obviamente) en el $resultado variable.Usted puede utilizar el __getFunctions método para devolver una lista de todos los métodos disponibles.

He utilizado NuSOAP en el pasado.Me gustó porque es sólo un conjunto de archivos PHP que puede incluir.No hay nada que instalar en el servidor web y no hay opciones de configuración para cambiar.Tiene soporte de WSDL así que es un bono.

Este artículo explica cómo se puede utilizar PHP SoapClient para llamar a una api de servicio web.

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

Usted no tiene estas herramientas si (por ejemplo) que estaba utilizando el bloc de notas para escribir el código.Así, tal vez usted debería hacer la pregunta para que la herramienta se está utilizando.

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

HOLA tengo este desde este sitio : http://forums.asp.net/t/887892.aspx?Consume+an+ASP+NET+Web+Service+with+PHP

El servicio web tiene método Add que toma dos parámetros:

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

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

Dicen que se le 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 el WSDL dirección 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 que se especifican en el XML se utilizan en el código PHP a pesar de que el nombre de usuario valor puede ser cambiado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top