Re: [PHP-ES] Uso de SoapClient

[email protected]
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
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.