Ver Mensaje Individual
  #1 (permalink)  
Antiguo 11/01/2012, 15:41
chcma
 
Fecha de Ingreso: junio-2003
Ubicación: Asturias
Mensajes: 2.429
Antigüedad: 20 años, 11 meses
Puntos: 7
WCF - Android - Ksoap2 - Enviar objeto a metodo del WCF (Funciona a medias)

Buenas noches desde España Foreros.

Tengo un WCF Service que tiene un método, que recibe como parametro un objeto, el cual luego devuelve otra vez.

La llamada desde mi Android es satisfactoria, recibo el objeto correctamente en mi cliente Android.

Sin embargo, a la hora de hacer la llamada al metodo, yo mando este mismo objeto a mi metodo en el WCF, cuyo cuerpo es el siguiente:

Código:
        public CompositeType GetDataUsingDataContract(CompositeType composite)
        {

            if (composite == null)
            {
                throw new ArgumentNullException("composite");
            }
            

            composite.SringValue="miValor";
            if (composite.BoolValue)
            {
                composite.StringValue += "Suffix";
            }
            return composite;
        }
Ok, desde mi cliente Android, recibo el objeto correctamente. Pero, yo estoy mandando desde Android el parametro, con la propiedad BoolValue a true, para recibir en la propiedad StringValue el valor Suffix agregado.

Pero no, parece ser que los valores que establezco en mi Android no son recibidos en mi servicio, aun que si que es capaz de Deserializar el objeto, ya que sino, no me llegaría a cliente otra vez el objeto.

¿Saben que puede ser lo que esté haciendo mal?
Desde Android hago esto:

Código:
	        	SoapObject request = new SoapObject(NAMESPACE, METHOD_NAME);
	        	
	        	//*** PROPIEDAD *** DEBERIA COGER EL TRUE EN EL WCF...
	        	CompositeType objComposite = new CompositeType();
	        	objComposite.setProperty(0, true);
	        	objComposite.setProperty(1, "Probando");
	        	
	        	//*** la agrego a la peticion ***
	        	PropertyInfo objParameter = new PropertyInfo();
	        	objParameter.setName("composite");
	        	objParameter.setValue(objComposite);
	        	objParameter.setType(CompositeType.class);
	        		        	
	        	request.addProperty(objParameter);
	        	
	        	
	        	SoapSerializationEnvelope envelope = new SoapSerializationEnvelope(SoapEnvelope.VER11);
	        	envelope.dotNet = true;
	        	envelope.setOutputSoapObject(request);
	        	envelope.addMapping(NAMESPACE_CONTRACT, "CompositeType", CompositeType.class);
	        	
	        	
	        	HttpTransportSE androidHttpTransport = new HttpTransportSE(URL);	        	
	        	androidHttpTransport.call(SOAP_ACTION, envelope);

                        //Recibo el objeto de WCF correctamente
	        	SoapObject response = (SoapObject)envelope.getResponse();
En fin, espero que alguien que esté familiarizado con esto, pueda hecharme un cable. Desde ya, muchas gracias.
__________________
Charlie.