| Newsgroups |
php.general.es |
| Message-ID |
<000301cb930b$97ff5ed0$2201a8c0@TECNWEB> |
En realidad estás haciendo un uso incorrecto de la secuencia de
instrucciones, Pablo.
La referencia a una variable $xml solo es para tu información, no para que
la uses como parámetro de paso al WebService.
El código que deberÃas usar es como sigue (ojo al uso obligatorio de WSDL o
no, que debe indicártelo tu servidor. En este ejemplo es "obligatorio".)
<?php
try {
$options = array('soap_version'=>SOAP_1_2,
'exceptions'=>true,
'trace'=>1,
'encoding'=> UTF-8,
'cache_wsdl'=>WSDL_CACHE_NONE
);
$client = new SoapClient('URL_WEBSERVICE?WSDL', $options); // p.e.
http://serv.php.net/WebServer?WSDL
$results = $client->CheckUser(array('user_email'=>'elusuario',
'user_password'=>'lapassword'));
$respuesta = $client->__getLastResponse();
} catch (Exception $e) {
echo "<h2>Exception Error!</h2>" . $e->getMessage();
}
echo "<br>Respuesta:" . $results->CheckUserResult;
print_r($respuesta);
?>
Mucha atención porque estas dos últimas lÃneas son excluyentes... o usas una
o usas la otra. La primera hace referencia a una posible función de retorno
de los valores del WebService, mientras que la segunda, mostrará todo el
resultado de la respuesta. La ventaja de la primera sobre la segunda es que
podrás manejar variables independientes, mientras que en el segundo caso,
tendrás una salida "lineal" de todo el contenido. Para empezar a probar, yo
usuarÃa la segunda (poniendo a comentario la primera) y luego irÃs refinando
las respuestas usando la primera (y comentando la segunda, claro).
Espero haberte ayudado. Ya nos contarás.
Un saludo.
Fernando EguÃlaz
----- Original Message -----
From: "Pablo Braulio" <[email protected]>
To: "Lista de PHP en español" <[email protected]>
Sent: Thursday, December 02, 2010 4:50 PM
Subject: [PHP-ES] Uso de SoapClient
> Hola a todos.
>
> Estoy llamando a un webservice con SOAP y siempre obtengo como respuesta
> 0.
>
> El adminstrador del webservice me asegura que funciona perfectamente ya
> que ha probado con soapUI (herramienta para testear webservices) y
> responde correctamente.
>
> Ya no se si hay algo que no estoy haciendo bien, o que realmente no
> funciona bien el servidor.
>
> Os pongo el código:
>
> $xml= '<soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
> xmlns:ecom="http://URL">
> <soapenv:Header/>
> <soapenv:Body>
> <ecom:checkUser>
> <!--Optional:-->
> <user_email>USUARIO</user_email>
> <!--Optional:-->
> <user_password>XXXXXX</user_password>
> </ecom:checkUser>
> </soapenv:Body>
> </soapenv:Envelope>';
>
> $com= new SoapClient('URL_WEBSERVICE'), array(
> 'trace'=> 1,
> 'encoding'=> 'UTF-8'
> ));
>
> $xmlRespuesta= $com->checkUser($xml);
>
> $respuesta= $com->__getLastResponse();
>
> print_r($respuesta);
>
> Y lo que muestra:
>
> <?xml version="1.0" ?><S:Envelope
> xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"><S:Body><ns2:checkUserResponse
> xmlns:ns2="http://ecommerce.deyde.com/"><return>0</return></ns2:checkUserResponse></S:Body></S:Envelope>
>
> ¿Alguna idea?.
> --
> Saludos cordiales.
> Pablo.
>
> Si lo reenvÃas, ten la precaución de borrar los datos de procedencia que
> encabezarÃan tu reenvÃo – empezando por mi dirección de correo
> electrónico - . Coloca siempre las direcciones de tus contactos en el
> campo <CCO> para que viajen discretas, no en el campo <Para> ni en el<CC>.
> De esa forma nadie que lo reciba tendrá constancia de las señas de los
> demás destinatarios a los que también se remite. Todo ello a fin de evitar
> que nadie se aproveche de todas las direcciones que se van acumulando al
> pasar de buzón a buzón para el lanzamiento de correo basura y otras
> indeseadas lindezas. Aparte claro está de garantizar la privacidad.
>
>
>
> Gracias.
>
> --
> PHP Spanish Localization Talk Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>