PDA

Ver la Versión Completa : [ CONSULTA ] web service desde dispositivo android no funciona


p4co0
07/08/13, 18:35:38
lo que pasa, es que en mi proyecto quiero usar web service, baje unas librerías ksoap y gson algo asi.. le di permisos de internet y todo lo demas, tuve que importar esas librerías mencionadas. y todo funciona perfecto, pero al momento de correrlo en una tablet o un dispositivo móvil, no funciona el web service, que es lo que pasa? pd: la tabler si tiene wifi. Saludos :-)

osmaga2013
24/08/13, 11:31:42
Hola p4co0, yo también estoy teniendo problemas con gson, es justamente al deserializar la cadena JSON. De todas, formas. ¿Que es lo que no te funciona exactamente? Puedes ver correctamente la cadena que te devuelve?

A mi me pasaba que cuando hacia la conexion, al ser asincrona no le daba tiempo a que me lo mostrara.
Mirate este enlace de la web oficial de desarrolladores android a ver si te sirve de algo.
http://developer.android.com/training/sync-adapters/index.html en este enlace solo te devuelve la cadena json, luego con GSON haces las operaciones. Si consigues volcar el json a tu objeto me lo dices jajaja que no consigo hacerlo.

Saludos!

jmmunoz
24/08/13, 11:38:45
Aclarar que soy picateclas pero no de movil...

Es un web service o es un webapi?
El webservice es .net, php?

Que protocolo de conexión usas?

Porque si es webservice con protocolo soap tienes que enviar un xml.... y indicar en este el método al que te vas a conectar...

Si es un webapi o un webservice de php deberas configurar la recepcion de parámetros

jmmunoz
24/08/13, 11:40:09
Hola p4co0, yo también estoy teniendo problemas con gson, es justamente al deserializar la cadena JSON. De todas, formas. ¿Que es lo que no te funciona exactamente? Puedes ver correctamente la cadena que te devuelve?

A mi me pasaba que cuando hacia la conexion, al ser asincrona no le daba tiempo a que me lo mostrara.
Mirate este enlace de la web oficial de desarrolladores android a ver si te sirve de algo.
http://developer.android.com/training/sync-adapters/index.html en este enlace solo te devuelve la cadena json, luego con GSON haces las operaciones. Si consigues volcar el json a tu objeto me lo dices jajaja que no consigo hacerlo.

Saludos!

Pero el servidor recibe la llamada que haces?
Esa es la primera comprobación que deberías hacer....

Luego ver que la respuesta este correctamente formada... es decir que tu json se haya creado correctamente y sin ningun error...

Otra es... no se en los móviles pero si en las webs. ... si haces llamada a servidores de diferentes dominios necesitas hacer un jsonp

Que es lo mismo pero pasando un parámetro con un nombre especifico que también lo devuelve el servidor.

Si no puedes ver la respuesta por el async ponlo sync y mira si te responde algo...

osmaga2013
26/08/13, 22:59:58
Pero el servidor recibe la llamada que haces?
Esa es la primera comprobación que deberías hacer....

Luego ver que la respuesta este correctamente formada... es decir que tu json se haya creado correctamente y sin ningun error...

Otra es... no se en los móviles pero si en las webs. ... si haces llamada a servidores de diferentes dominios necesitas hacer un jsonp

Que es lo mismo pero pasando un parámetro con un nombre especifico que también lo devuelve el servidor.

Si no puedes ver la respuesta por el async ponlo sync y mira si te responde algo...

Hola jm, gracias por contestar. El servidor si que recibe dichas llamadas, de echo la cadena que me devuelve es correcta, ya que me devuelve los datos de mi Base de Datos MySQL.

lo que hago es que en codigo pongo:

MiClase miclase = gson.fromJson(cadenajson, miclase.class);

En esa linea es donde me falla. Antes me fallaba por que no daba tiempo a la app a establecer la variable cadenajson y lo solucioné con una clase Async.

jmmunoz
26/08/13, 23:16:38
Hola jm, gracias por contestar. El servidor si que recibe dichas llamadas, de echo la cadena que me devuelve es correcta, ya que me devuelve los datos de mi Base de Datos MySQL.

lo que hago es que en codigo pongo:

MiClase miclase = gson.fromJson(cadenajson, miclase.class);

En esa linea es donde me falla. Antes me fallaba por que no daba tiempo a la app a establecer la variable cadenajson y lo solucioné con una clase Async.



El error que da lo puedes poner? Y ya de paso si puedes poner miclass que tipo de propiedad es y la cadena que devuelve... A ver si veo que ocurre...




Miclase.class no tiene las mismas propiedades que el objeto que devuelve la cadena y PETA en la conversión a json



No tendrá que ser?



MiClase miclasenew = gson.fromJson(cadenajson, Miclase);



Ya que tienes el modelo miclase quien tiene las propiedades que debería tener tu objeto json.... Al fin y al cabo... Le estas diciendo con que modelo debe casar tu transformación a json..



Y tu código estas supuestamente reemplazando un objeto que estas declarando de nuevo y le estas diciendo que lo parsee con un atributo clase..



Ya que... Es raro que tengas las propiedades de tu objeto en una propiedad class y todavía mas raro que asignes un objeto a otro igual...



Supongo que has "disfrazado" los nombres... Si no es así.. Pon,e el código de lo que te solicito o prueba lo que te pongo...



La verdad que sin ser especialista en android y con una linea de código sin su contexto es difícil... Pero estoy convencido que me acerco bastante al error :sly:

osmaga2013
27/08/13, 19:28:55
JM gracias de nuevo por contestar. Mi clase de datos es

package com.diaita;

import com.google.gson.annotations.SerializedName;

public class PacienteModel
{
@SerializedName("id")
public String id;

@SerializedName("Nombre")
public String _Nombre;

@SerializedName("Apellidos")
public String _Apellidos;

@SerializedName("sexo")
public String _Sexo;

}

y mi cadena JSON (que viene de una tabla de una base de datos)

{"id":"123456789","Nombre":"GEnerico","Apellidos":"Generico Generico","Sexo":"0"}

el error que me da en gson.TypeAdapter o algo de eso. Deduzco que es por que no puede paresar el objeto.