Acceso a servicios web desde Android

Nihon

Hola compañeros:

Me pongo otra vez en vuestras manos por una duda: para envíar imágenes desde mi aplicación al servidor de mi empresa hemos creado un servicio web. El caso es que yo me he encargado de la parte del móvil y la empresa que gestiona el servidor ha hecho su parte de recibir por lo que sólo manejo la parte cliente.

Pues bien, para envíar los datos codifico una imagen a String64 y la envío por SOAP al servidor, allí la función espera un archivo con unos parámetros donde se debe procesar la información. Pero nunca llega a procesarlo ¿Porqué? Por que lo que envío y lo que espera es distinto.

Esto es lo que espera recibir:

spoiler

Y esto es lo que recibe:

spoiler

La diferencia está en los prefijos (espacio de nombres), pero llevo varios días probando y cambiando cosas del código y no he conseguido nada.

Así que tengo dos preguntas. La primera es obvia ¿sabéis como puedo hacer que envíe exactamente lo que se espera? Y la segunda, si en el servidor reciben la información tal como muestro ¿no podrían también modificar alguna parte de su código para leerlo, o depende exclusivamente de lo que yo envío? Gracias de antemano.

Adjunto la llamada de mi código para más informacion.

spoiler
pdj

#1 Quita:

request.addProperty("strImg", encodedImage);
request.addProperty("password","password");

Y añade:

PropertyInfo pi = new PropertyInfo();
pi.setNamespace("http://ws.prueba.es");
pi.setName("strImg");
pi.setValue(encodedImage);
pi.setName("password");
pi.setValue("password");
request.addProperty(pi);

No lo he probado pero deberia funcionar XD

DISCLAIMER: Hace eones que no uso SOAP asi que bueno, lo que importa es la intención XD, espero que te sirva

1 1 respuesta
Nihon

#2 Gracias por la ayuda, pero no funciona. Tal como está el código lo que hace es añadir sólo el último par de valores (setName y setValue se reciclan y sólo coge el último valor).

#4 Ya, lo estoy probando a ver.

1 respuesta
pdj

#3 tienes que crear otro objeto, estoy tonto sorry :S

1 respuesta
pdj

A las malas usa http://stackoverflow.com/questions/6698940/how-to-add-properties-to-this-soap-wsdl-android no parece muy elegante pero dicen que funciona

2 respuestas
Nihon

#5 Si, hacerlo a lo bruto es la opción que estoy barajando ahora, pero si encuentro una antes que funcione, mejor. Gracias de nuevo.

PinVa

#1 #5 Perdonar, creo que yo para una aplicacion cliente tengo que hacer algo parecido, pero no se que es SOAP.

Por favor alguno me lo aclara? Gracias

#7 Gracias!

1 respuesta
Nihon

#7 SOAP es un protocolo para envíar información entre servidor y cliente en servicios web. Ambas partes establecen una tipología común que deben seguir, con los mismos nombres para los parámetros y métodos y se intercambian la información como archivos XML.

Basicamente es crear un archivo XML (como puedes ver en mi ejemplo en el primer post) con unos parámetros que envía el cliente y recibe el servidor.

1
Nihon

Al final lo hemos hecho funcionar escribiendo todo el SOAP como un string a pelo. Al final la fuerza bruta a funcionado. En fin, cosas de la informática.

1