Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

ayuda con web service

Estas en el tema de ayuda con web service en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Hola amigos , tengo un problema , me conecto a un web service (el ws esta en asmx y lo que retorna es un xml) ...
  #1 (permalink)  
Antiguo 23/12/2008, 20:37
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
ayuda con web service

Hola amigos , tengo un problema , me conecto a un web service (el ws esta en asmx y lo que retorna es un xml) ,desde php y este es el codigo.


require_once('lib/nusoap.php');
$wsdlURL= 'http://volcado/WebServiceLuisRelease/WebServiceLuis.asmx?WSDL';
$soap = new soapclient($wsdlURL, 'WSDL');
$result = $soap->call('Luis');
$var=$result["LuisResult"];

El problema es que me tiene que retornar un xml con su estructura y valores y me retorna solo los valores del xml y yo necesito su estructura con sus valores para recorrerlo.
Ademas si han recorrido una variable que contiene un xml, si tuvieran un ejemplo se los agradeceria.

Les agradeceria si me ayudaran
  #2 (permalink)  
Antiguo 24/12/2008, 06:13
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: ayuda con web service por favor

Consulta tonta, estás seguro que call('Luis') retorna un xml?

Me da la impresión que desde el lado del servidor no te están retornando lo que esperas y no es un problema de SOAP.

No te olvides que SOAP es Simple Object Access Protocol, no es XML, tú deberías poder enviar y recibir un "objeto simple" entre distintas plataformas / lenguajes de forma transparente.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #3 (permalink)  
Antiguo 24/12/2008, 07:21
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con web service por favor

Esta es la forma en la cual me conecto al web service y lo hace correctamente .

require_once('lib/nusoap.php');
$wsdlURL = 'http://volcado/WebServiceLuisRelease/WebServiceLuis.asmx?WSDL';
$soap = new soapclient($wsdlURL, 'WSDL');
$result = $soap->call('Luis','',''); //aquí invoco a un metodo y le mando 2 parametros
$var=$result["LuisResult"]; // aquí me devuelve el xml
echo $var;

Pero en vez de mostrame la estructura del xml con sus valores, me muestra el contenido de sus valores:

Tendre que colocarle alguna instrucción para ver el xml y no sus valores.

Esto es lo que que me retorna

37YCHIW

y me debiera retornar

<ref_code>37</ref_code><ejemplo>Y<ejemplo><muestra>CHIW</muestra>

El web service esta en .net y se probo en.net y realmente retorna un xml con toda su estrcutura, me indicaron que en net hay que colocarle innerxml para que devuelva la estructura del xml , pero en Php ni idea ,me he vuelto loco buscando en internet y no encuentro nada.
  #4 (permalink)  
Antiguo 24/12/2008, 07:27
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: ayuda con web service por favor

Mmmm... puedes tirar un var_dump del resultado que esperas un xml?

var_dump( $soap->call('Luis','','') );
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 24/12/2008, 12:22
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con web service

Le agregue esa instruccion y me devuelve .....

array(1) { ["LuisResult"]=> string(754) "37YCHIW00086BKDSUSBALCLARI38YCHIW00086BKDSUSBALCL SAI" }
  #6 (permalink)  
Antiguo 24/12/2008, 12:25
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con web service

Gracias por tu intencion de ayudarme ,supieras la presion que tengo para hacer esto , una vez que logre obtener el xml tengo que recorrerlo , lastima que los ejemplos que hay en la web solo muestran como recorrer un archivo fisico y no una variable que contiene un xml

Feliz Navidad amigo......
  #7 (permalink)  
Antiguo 24/12/2008, 12:26
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: ayuda con web service

Cita:
Iniciado por lcisternas Ver Mensaje
Le agregue esa instruccion y me devuelve .....

array(1) { ["LuisResult"]=> string(754) "37YCHIW00086BKDSUSBALCLARI38YCHIW00086BKDSUSBALCL SAI" }
Cómo es la especificación? Que te dice el WSDL que debería retornar la llamada "luis"?
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #8 (permalink)  
Antiguo 24/12/2008, 17:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con web service

Enrique ,el archivo asmx yo lo pruebo en el Servidor de IIS, le ingreso 2 parametros y me muestra un xml, el problema debe ser de nusoap, ya que lo he probado con otro webservice el cual tambien me tiene que retornar un xml y me devuelve solo sus valores.
¿existe alguna instruccion para decirle a mi aplicacion en php , que lo que debe retorna es un xml?
  #9 (permalink)  
Antiguo 25/12/2008, 09:17
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: ayuda con web service

Hola,

Revisaste el código fuente de la salida que genera ese php?

Si yo hago esto:

Código PHP:
echo '<ref_code>37</ref_code><ejemplo>Y<ejemplo><muestra>CHIW</muestra>'
El navegador me muestra

37YCHIW

Pero si hago click derecho ver código fuente, veo:

<ref_code>37</ref_code><ejemplo>Y<ejemplo><muestra>CHIW</muestra>



Te comento porque es algo que me paso varias veces... en Firefox y amigos si a la salida no le indicas que es un XML te muestra todos los valores seguidos sin tags.


Saludos
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #10 (permalink)  
Antiguo 25/12/2008, 14:14
Avatar de MaBoRaK  
Fecha de Ingreso: abril-2003
Ubicación: La Paz - Bolivia
Mensajes: 2.003
Antigüedad: 21 años
Puntos: 35
Respuesta: ayuda con web service

loading.............


Pon el código de tu server SOAP, tu cliente SOAP y tu archivo WSDL.


connection closed.
__________________

Maborak Technologies
  #11 (permalink)  
Antiguo 26/12/2008, 08:22
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con web service

Tienes toda la razon con el boton derecho me muestra un XML , pero tengo las siguientes dudas :

1.-El string que recibe el Xml, ¿contiene un xml (con su estructura), o solamente contiene los valores?.

$var=$result["LuisResult"]; // aquí me devuelve el xml

Ya que al hacer un echo me muestra solo los valores , como le digo al PHP, que estoy recibiendo un XML.

Te cuento ya que tengo que recorrer esta variable(con su xml).

2.- Como le digo al explorer que un Xml.

Muchas Gracias
  #12 (permalink)  
Antiguo 26/12/2008, 08:35
 
Fecha de Ingreso: julio-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.304
Antigüedad: 18 años, 9 meses
Puntos: 6
Respuesta: ayuda con web service

Cita:
Iniciado por lcisternas Ver Mensaje
Tienes toda la razon con el boton derecho me muestra un XML , pero tengo las siguientes dudas :

1.-El string que recibe el Xml, ¿contiene un xml (con su estructura), o solamente contiene los valores?.

$var=$result["LuisResult"]; // aquí me devuelve el xml

Ya que al hacer un echo me muestra solo los valores , como le digo al PHP, que estoy recibiendo un XML.

Te cuento ya que tengo que recorrer esta variable(con su xml).

2.- Como le digo al explorer que un Xml.

Muchas Gracias
Lo que tienes en $var es todo lo que ves cuando lo muestras, haces click derecho y ves el codigo fuente. Lo que ahi se ve es lo que recibes de tu servicio.


Para parsear el XML desde PHP puedes usar por ejemplo SimpleXML de
PHP5
Ej:

Código PHP:
<?php
$var
=$result["LuisResult"];
$xml simplexml_load_string($var);

var_dump($xml);
?>


No es necesario que le indiques nada al explorer en este caso, salvo que tu objetivo sea mostrar el XML por pantalla y que aparezca como tal, no todo junto. Si igual quieres probar coloca esto antes del echo:

header ("content-type: text/xml");


y verás el XML en pantalla.


Saludos
__________________
Federico.

Mi página: www.jourmoly.com.ar
  #13 (permalink)  
Antiguo 26/12/2008, 13:28
 
Fecha de Ingreso: diciembre-2008
Mensajes: 84
Antigüedad: 15 años, 4 meses
Puntos: 0
Respuesta: ayuda con web service

Muchas gracias por tu ayuda, ya que pense que me manejaba en php , pero esto de los web service es nuevo para mi y gracias a personas como uds , podemos seguir aprendiendo .

Te puedo molestar con otra consulta, me tengo que conectar con un seb service en donde yo les tengo que generar un Xml.

Lo estoy probando de esta forma :
El metodo ImportRFB recibe 3 parametros:

1 string-1 xml-1 entero.


<?
$buffer='<?xml version="1.0" encoding="ISO-8859-1"?>
<agenda>
<persona nombre="Carlos Leon" telefono="98784562"/>
<persona nombre="Ana Maria" telefono="55778445"/>
<persona nombre="Diana Lorena" telefono="112244455"/>
</agenda>
';
require_once('lib/nusoap.php');
$wsdlURL = 'http://volcado/WebServiceLuisRelease/WebServiceLuis.asmx?WSDL';
$soap = new soapclient($wsdlURL, 'WSDL');
$result = $soap->call('ImportRFB','130b39b4',$buffer,0);
$data=$result["ImportRFBResult"];
?>

Estara correcto la forma de enviar un string que contiene un Xml, asi como tambien la posicion de cada linea.
ya que se me cae y me indica :

No se puede mostrar la página XML .
Sólo se admite un elemento de nivel superior en un documento XML. Error al procesar el recurso ............................

La ultima pregunta , para asignarle un xml a un string a travez de consutas de una base datos tendre que crear el xml manualmente , concatenando siempre el string que va a contener el xml, osea asi:

$Consulta="select .....";
$Resp=mysql_query($Consulta);
$Fila=mysql_fetch_array($Resp))
$Dato1=$Fila[codigo];
$xml='<?xml version="1.0" encoding="ISO-8859-1"?>';
$xml=$xml.'/n';
$xml=$xml.'<Header><ID>$Dato1</ID></Header>';
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:01.