Android - Servicio Web no muestra datos

 
Vista:
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Servicio Web no muestra datos

Publicado por Luis (97 intervenciones) el 07/09/2017 00:53:09
Hola de nuevo Valla racha que he pillado.

Estoy utilizando un servicio web para traer todos los registros de una base de datos remota lo cual logro sin problema pero estoy desconcertado ya que en algunos dispositivos me comentan los usuarios no se reciben los datos.
La poca informacion que tengo sobre dispositivos afectados es esta


BQ acuaris e5 android 5.0 lolipot perfecto
Huawei P8 lite android 5.0.1 lolipot perfecto
ZTE blade v7 android 6.0 Marshmallow Perfecto


BQ acuaris android 4.2.1 Jelly bean NO muestra los datos
Huawei P8 lite android 7.0 Nougat NO muestra los datos
Galaxi S6 android 7.0 Nougat NO muestra los datos
Oukiel K6000 Pro android 6.0 NO muestra datos
Xiaomi Redmi Note 4 android 7.1.2 NO muestra los datos


Es que me desconcierta este
ZTE blade v7 android 6.0 Marshmallow Perfecto
y
Oukiel K6000 Pro android 6.0 Marshmallow NO muestra datos

Si fuera Marshmallow o superior en el ZTE no deberia mostrarse



Este es el servicio Web que estoy usando y parece que da error en Nougat, Jelly Bean y Marswall y tambien dejo el Build.Gradle por si fuera el culpable

Les agradeceria de su ayuda ya que no se a que se puede dever.
No se si esculpa del navegador que tengan instalado o del user agent que utilizo

Aqui les dejo el servicio web muchas gracias por su tiempo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
ObtenerWebService hiloconexion;
 
 
hiloconexion = new ObtenerWebService();
    hiloconexion.execute(GET,"1");
 
 
 
 
public class ObtenerWebService extends AsyncTask<String,Void,String> {
 
    @Override
    protected String doInBackground(String... params) {
 
        String cadena = params[0];
        URL url = null; // Url de donde queremos obtener información
        String devuelve ="";
 
        if(params[1]=="1"){    // Consulta de todos los rgistros
 
            try {
                url = new URL(cadena);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection(); //Abrir la conexión
                connection.setRequestProperty("User-Agent", "Mozilla/5.0" +
                        " (Linux; Android 1.5; es-ES) Ejemplo HTTP");
                //connection.setHeader("content-type", "application/json");
 
                int respuesta = connection.getResponseCode();
                StringBuilder result = new StringBuilder();
 
                if (respuesta == HttpURLConnection.HTTP_OK){
 
 
                    InputStream in = new BufferedInputStream(connection.getInputStream());
 
                    BufferedReader reader = new BufferedReader(new InputStreamReader(in));
 
 
 
                    String line;
                    while ((line = reader.readLine()) != null) {
                        result.append(line);        // Paso toda la entrada al StringBuilder
                    }
 
 
                    JSONObject respuestaJSON = new JSONObject(result.toString());
 
                    String resultJSON = respuestaJSON.getString("estado");   // estado es el nombre del campo en el JSON
 
                    if (resultJSON=="1"){      // hay alumnos a mostrar
                        JSONArray alumnosJSON = respuestaJSON.getJSONArray("alumnos");   // estado es el nombre del campo en el JSON
                        for(int i=0;i<alumnosJSON.length();i++){
                            devuelve = devuelve +
                                    alumnosJSON.getJSONObject(i).getString("idalumno") + " " +
                                    alumnosJSON.getJSONObject(i).getString("nombre") + "   " +
                                    alumnosJSON.getJSONObject(i).getString("direccion") + "\n";
 
 
                        }
 
                    }
                    else if (resultJSON=="2"){
                        devuelve = "No hay alumnos";
                    }
                }
 
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (JSONException e) {
                e.printStackTrace();
            }
 
            return devuelve;
        }
 
        return null;
    }
 
    @Override
    protected void onCancelled(String s) {
        super.onCancelled(s);
    }
 
    @Override
    protected void onPostExecute(String s) {
 
         resultado.setText(s);
 
    }
 
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }
 
    @Override
    protected void onProgressUpdate(Void... values) {
        super.onProgressUpdate(values);
    }
}



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
apply plugin: 'com.android.application'
 
android {
    compileSdkVersion 24
    buildToolsVersion "24.0.3"
    defaultConfig {
        applicationId "com.mi.aplicacion.serviciosweb"
        minSdkVersion 13
        targetSdkVersion 24
        versionCode 24
        versionName "2.2.5"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}
 
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:24.2.1'
    testCompile 'junit:junit:4.12'
    compile 'com.google.android.gms:play-services-ads:9.6.1'
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Servicio Web no muestra datos

Publicado por Luis (97 intervenciones) el 08/09/2017 07:26:17
Hola buenos días.
Anoche estuve intentando cosas sin éxito.
La versión mínima que tenia era la 13 así que la subí a la 23 y actualice todo.
Al correr en el emulador se ejecuta correctamente no da ningún error pero sigue sin mostrar los datos únicamente hace la función insertar.

Pensando que podía existir alguna sentencia obsoleta cree un nuevo proyecto desde 0 para marswal 6.0api 23 con la esperanza de que según le fuera colocando el código poco a poco me saltase una alarma avisando de que algo estuviese deprecated obsoleto pero no salio nada.

Corro la aplicación en el emulador y no mostró los resultados.

En el dispositivo físico tampoco.

Estoy perdido no se como salir de esta.

Les pido de su ayuda.

Muchas gracias por su tiempo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Servicio Web no muestra datos

Publicado por Carlos Ismael (38 intervenciones) el 08/09/2017 15:36:18
Como? ahora no muestra los datos pero si los recibe en varios celulares?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 112
Bronce
Ha disminuido 1 puesto en Android (en relación al último mes)
Gráfica de Android

Servicio Web no muestra datos

Publicado por Yamil Bracho (100 intervenciones) el 08/09/2017 15:49:08
Hay varias cosas alli.
1) Antes que nada chequea de que la url corresponda a la de tu servicio. Asi que imprime en el log o haz un paso a paso y verifica el valor de cadena
2) En java para comparar String (o otro tipo de objetos) usas el metodo equals. Asi que params[1]=="1" cambialo a "1".equals(params[1]
3) Chequea la respuesta de tu servicio imprimiendo el valor de result
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

Servicio Web no muestra datos

Publicado por Carlos Ismael (38 intervenciones) el 08/09/2017 16:01:35
Con el puro ResponseCode que "Ya obtiene del servicio ejecutado" se puede dar cuenta, un 200 o un 204 esta bien, si ya tienes lo que retorna el servicio, checa tu manera de mostrar los datos. y pues si tienes un emulador de algun celular que utilice el servicio o el celular fisico, debuguea la aplicación y agrega breakpoints para ver el flujo de tu APP. Yo creo el error que marca es el mismo en todos los demas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Servicio Web no muestra datos

Publicado por Luis (97 intervenciones) el 08/09/2017 17:30:44
Muchas gracias por las respuestas pero como digo hasta lolipot el método get funciona correctamente por lo que afecta solo a marswal y Nougat.

He encontrado esto.


En Android 6.0 se elimina el soporte al cliente HTTP. Desde la documentación oficial de Android, nos recomiendan que si utilizamos el API 9 o superior, implementemos la clase HttpURLConnection, ya que se trata de una opción más eficiente (menos consumo de energía).

En el supuesto de querer seguir utilizando el cliente HTTP, se deberá añadir como dependencia dentro del archivo build.gradle:

1
2
3
4
5
android {
 
    useLibrary 'org.apache.http.legacy'
 
}  

Lo he añadido al gradle pero sin éxito.

Alguna idea?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Servicio Web no muestra datos

Publicado por Carlos Ismael (38 intervenciones) el 08/09/2017 17:46:56
Pues yo he utilizado HttpUrlConnection en Marshmallow y para abajoo (Lollipop, etc), pues no sabre que es, como te digo puedes checar que error te marca al debuguear en un emulador etc. O por otro lado, prueba con retrofit para implementar tus WebService(Android Studio nose si aplique a los demas IDEs ), yo he probado retrofit en sdk 17 y 23 y funciona correctamente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 197
Plata
Ha mantenido su posición en Android (en relación al último mes)
Gráfica de Android

Servicio Web no muestra datos

Publicado por Luis (97 intervenciones) el 08/09/2017 17:51:44
Es que no me marca ningún error por eso estoy perdido.
Me pondré a buscar sobre retrofit.

Si conoces algún ejemplo es de agradecer.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Servicio Web no muestra datos

Publicado por Carlos Ismael (38 intervenciones) el 08/09/2017 18:00:37
mmm entiendo :/ eso es pesadoo pff, pues en youtueb hay unos tutoriales de Hackro creo que se llama y estan basicos para saber su funcionamiento y eso, estan en español y pues utiliza la libreria GSON tambien pero no tiene mucho pierde si estas familiarizado con RESTFul en Android. Saludos loco lml ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar