Foros del Web » Programación para mayores de 30 ;) » Java »

Error en cliente soap para capturar un array

Estas en el tema de Error en cliente soap para capturar un array en el foro de Java en Foros del Web. Estoy intentando crear un cliente soap para conectarme a un servicio web hecho en php, he tenido éxito cuando el servicio me retorna un valor ...
  #1 (permalink)  
Antiguo 11/07/2013, 14:37
 
Fecha de Ingreso: noviembre-2010
Ubicación: El Salvador
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 6
Error en cliente soap para capturar un array

Estoy intentando crear un cliente soap para conectarme a un servicio web hecho en php, he tenido éxito cuando el servicio me retorna un valor simple como un número o un texto, pero cuando necesito que me regrese un arreglo es que tengo el error porque no sé como capturar los datos en realidad.

Lo que intento es llamar una lista de usuarios según el sexo, femenino o masculino. Este arreglo consta de un id, nombre y apellido como este ejemplo:

Id: 1 - Nombre: Zelda, Apellido: De Hyrule
Id: 2 - Nombre: Misato, Apellido: Katsuragi
Id: 3 - Nombre: Asuka, Apellido: Langley
Id: 7 - Nombre: Jill, Apellido: Valentine

Este es el código:
Código Java:
Ver original
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package cliente_soap2;
  6.  
  7. import org.apache.axis.client.Call;
  8. import org.apache.axis.client.Service;
  9. import javax.xml.namespace.QName;
  10. import javax.xml.rpc.ParameterMode;
  11.  
  12.  
  13. /**
  14.  *
  15.  * @author hug0
  16.  */
  17. public class Cliente_soap2 {
  18.  
  19.   /**
  20.    * @param args the command line arguments
  21.    */
  22.   public static void main(String[] args) {
  23.     // TODO code application logic here
  24.     try{
  25.            
  26.       //url del servicio soap  
  27.       String soapURL= "http://garabatoslinux.net/apps/soap_java/servicio.phpp";
  28.    
  29.       //instanciar un nuevo servicio
  30.       Service servicio = new Service();
  31.      
  32.       //variable que invocara la llamada al servicio
  33.       Call llamada = (Call) servicio.createCall();
  34.  
  35.       //establecemos la direccion del servicio
  36.       llamada.setTargetEndpointAddress(new java.net.URL(soapURL));
  37.      
  38.       //establecemos el nombre de la funcion a llamar
  39.       llamada.setOperationName(new QName("consultaUsuarios"));
  40.      
  41.       //url con los esquemas de los tipos de datos
  42.       String NS_XSD = "http://www.w3.org/2001/XMLSchema";
  43.      
  44.       //tipo de dato a enviar
  45.       QName QNAME_TYPE_STRING = new QName(NS_XSD, "string");
  46.      
  47.       //definir el primer parametro a enviar
  48.       llamada.addParameter("sexo", QNAME_TYPE_STRING, ParameterMode.IN);
  49.      
  50.       //Introducir los parametros en un arreglo,
  51.       //en el mismo orde que se definieron
  52.       String[] parametros = {"m"};
  53.            
  54.       //Establecer el tipo de dato regresado
  55.       llamada.setReturnType(org.apache.axis.Constants.XSD_STRING);
  56.                  
  57.       //Guardar resultado despues establecer la llamada
  58.       String[] resultado = (String[]) llamada.invoke( parametros );
  59.      
  60.      
  61.       //imprimir resultado      
  62.       //System.out.println("El resultado de la suma es: " + resultado[0]);
  63.            
  64.     }catch (Exception e) {        
  65.       //System.err.print(e.getStackTrace());
  66.       //System.out.println("ERROR\n" + e.getStackTrace());
  67.     }
  68.   }
  69. }

Y este es el mensaje de error:
Código:
- Exception:
org.xml.sax.SAXException: SimpleDeserializer encountered a child element, which is NOT expected, in something it was trying to deserialize.
	at org.apache.axis.encoding.ser.SimpleDeserializer.onStartChild(SimpleDeserializer.java:145)
	at org.apache.axis.encoding.DeserializationContext.startElement(DeserializationContext.java:1035)
	at org.apache.axis.message.SAX2EventRecorder.replay(SAX2EventRecorder.java:165)
	at org.apache.axis.message.MessageElement.publishToHandler(MessageElement.java:1141)
	at org.apache.axis.message.RPCElement.deserialize(RPCElement.java:236)
	at org.apache.axis.message.RPCElement.getParams(RPCElement.java:384)
	at org.apache.axis.client.Call.invoke(Call.java:2467)
	at org.apache.axis.client.Call.invoke(Call.java:2366)
	at org.apache.axis.client.Call.invoke(Call.java:1812)
	at cliente_soap2.Cliente_soap2.main(Cliente_soap2.java:62)
Alguien me puede dar una pista de como debería capturar los datos para presentarlos, sería de mucho ayuda.
__________________
http://blog.kiuvox.com

Última edición por hugotuxsv; 11/07/2013 a las 18:24

Etiquetas: cliente, soap
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 21:50.