Foros del Web » Programando para Internet » PHP »

Capturar datos de XML en webservice!

Estas en el tema de Capturar datos de XML en webservice! en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente problema y no he encontrado forma de solucionarlo, agradecere mucho cualquier ayuda. debo implementar un webservice en PHP, que ...
  #1 (permalink)  
Antiguo 15/07/2012, 06:59
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 4 meses
Puntos: 3
Pregunta Capturar datos de XML en webservice!

Hola a todos,
tengo el siguiente problema y no he encontrado forma de solucionarlo, agradecere mucho cualquier ayuda.
debo implementar un webservice en PHP, que me actualice una tabla de usuarios de mi base de datos, el asunto es que "mi" web service debe recibir un xml con los datos de un usuario e insertarlos en mi base de datos pero no tengo idea de como hacerlo, pues los ejemplos que he encontrado tienen entradas de strings y int pero no de xml, agradecere mucho su ayuda con esto, estoy pensando en usar nuSoap pero no se como debo crear mi webservice para que indexe un XML y recoja los datos de los usuarios...
muchas gracias de antemanos a todos por su tiempo. aqui dejo lo que tengo hecho y que no me funciona pues no me devuelve nada!!!!

Este es el web service:

Código PHP:
<?php
require_once 'lib/nusoap.php';
$ns "http://ws/";
$server = new soap_server();
$server->configureWSDL('WmSocioRegistradoImportacion',$ns);
$server->wsdl->schemaTargetNamespace $ns;

$server->register('ImportarDatos',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns);

function 
ImportarDatos($xmlstr){
    
    
$miXml = new SimpleXMLElement($xmlstr);
    
$salida $miXml->clientes->sUsername;
    return new 
soapval('return''xsd:string'$salida);
}

$server -> service($HTTP_RAW_POST_DATA);
?>
este es el cliente:

Código PHP:
<?php
require_once 'lib/nusoap.php';
$wsdl "http://ws/ws-server.php?wsdl";
$cliente = new nusoap_client($wsdl'wsdl');

include 
'xml.php';
$params = array('xmlstr' => $xmlstr);
$response $cliente->call('ImportarDatos'$params);

echo 
$response;
?>
Y este es el fichero xml.php que guardo en una variable pues no se de ke otra forma podria recibirlo!

Código PHP:
<?php
$xmlstr 
= <<<XML
<?xml version='1.0' standalone='yes'?>
<clientes>
 <sUsername>MiNombre</sUsername>
 <sPassword>MiPass</sPassword>
</clientes>
XML;
?>

un saludo
  #2 (permalink)  
Antiguo 15/07/2012, 16:37
Avatar de topo_bionico  
Fecha de Ingreso: junio-2012
Mensajes: 89
Antigüedad: 11 años, 10 meses
Puntos: 20
Respuesta: Capturar datos de XML en webservice!

Buscaste información de como leer un archivo xml desde PHP?

http://www.webtaller.com/construccion/lenguajes/php/lecciones/leer-xml-simplexml-php.php

http://angelfqc.host22.com/blog/2011/08/20/leer-un-archivo-xml-con-php/

http://www.phpbsd.net/2007/02/09/leyendo-xml-desde-php-con-simplexml/
  #3 (permalink)  
Antiguo 16/07/2012, 05:09
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Capturar datos de XML en webservice!

Hola topo_bionico, muchas gracias x responder, basandome en lo que me dices me ha quedado el siguiente codigo que tampoco me funciona pues no me devuelve nada pues cuando la variable llega al WS llega de forma de string y no logro hacer que llegue con el formato XML que es lo que necesito, agradecere muchisimo tu ayuda con esto, aqui esta el codigo:

ws-server.php

Código PHP:
Ver original
  1. <?php
  2. require_once 'lib/nusoap.php';
  3. $ns = "http://localhost/yandy/";
  4. $server = new soap_server();
  5. $server->configureWSDL('WmSocioRegistradoImportacion',$ns);
  6. $server->wsdl->schemaTargetNamespace = $ns;
  7.  
  8. $server->register('ImportarDatos',array('xmlstr' => 'xsd:string'),array('return' => 'xsd:string'),$ns);
  9.  
  10. function ImportarDatos($xmlstr){
  11.    
  12.    $miXml = simplexml_load_string($xmlstr);
  13.    $salida = "";
  14.    foreach ($xml->mensaje as $mensaje)
  15.          $salida .= $mensaje->texto.' ';
  16.  
  17.  
  18.    return new soapval('return', 'xsd:string', $salida);
  19. }
  20.  
  21. if (isset($HTTP_RAW_POST_DATA))
  22. {
  23.     $input = $HTTP_RAW_POST_DATA;
  24. }
  25. else
  26. {
  27.     $input = implode("\r\n", file('php://input'));
  28. }
  29. $server->service($input);
  30. ?>

ws-cliente.php

Código PHP:
Ver original
  1. <?php
  2. require_once 'lib/nusoap.php';
  3. $wsdl = "http://localhost/yandy/ws-server.php?wsdl";
  4. $cliente = new nusoap_client($wsdl, 'wsdl');
  5.  
  6. $xmlstr = <<<XML
  7. <?xml version='1.0'?>
  8. <mensajes>
  9.   <mensaje>
  10.     <asunto>Hola</asunto>
  11.     <texto>Hola, que tal?</texto>
  12.   </mensaje>
  13.   <mensaje>
  14.     <asunto>Re: Hola</asunto>
  15.     <texto>Bien, gracias.</texto>
  16.   </mensaje>
  17. </mensajes>
  18. XML;
  19.  
  20. $params = array('xmlstr' => $xmlstr);
  21. $response = $cliente->call('ImportarDatos', $params);
  22.  
  23. echo $response;
  24. ?>

muchas gracias desde ya
un saludo
  #4 (permalink)  
Antiguo 16/07/2012, 07:31
 
Fecha de Ingreso: enero-2010
Ubicación: Barcelona, España
Mensajes: 57
Antigüedad: 14 años, 4 meses
Puntos: 3
Respuesta: Capturar datos de XML en webservice!

Hola otra vez, ya lo he resuelto solo faltaban unos ajustes a este ultimo codigo y ya puedo parsear el XML desde mi WS
muchas gracias
un saludo
  #5 (permalink)  
Antiguo 02/08/2012, 13:49
 
Fecha de Ingreso: octubre-2009
Mensajes: 2
Antigüedad: 14 años, 6 meses
Puntos: 0
Respuesta: Capturar datos de XML en webservice!

Hola tengo el problema que tenías, debo pasar un xml a un webservice. Ya puedo armar la estructura del xml, pero no se como pasarle esto al webservice. Muchas gracias por su ayuda

Etiquetas: tabla, xml, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:08.