Foros del Web » Programando para Internet » Android »

[SOLUCIONADO] Como consultar 2 array con Volley

Estas en el tema de Como consultar 2 array con Volley en el foro de Android en Foros del Web. Hola buen día. Tengo el siguiente problema: Quiero que en un solo onResponse pueda traer dos array que tengo en un archivo PHP que he ...
  #1 (permalink)  
Antiguo 29/03/2019, 15:15
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 6 años, 4 meses
Puntos: 46
Como consultar 2 array con Volley

Hola buen día.

Tengo el siguiente problema: Quiero que en un solo onResponse pueda traer dos array que tengo en un archivo PHP que he creado en un server de pruebas.

Pero cuando quiero trabajar el segundo array me dice que esta vació y la App se traba y cierra.

Código Java:
Ver original
  1. // Funcion para consultar todas las Brigadas en server remoto
  2.     private void descargarBrigadas(){
  3.         String url = "https://www.simcrs.org.sv/OCHOA/apiRestOCHOA";
  4.         jrq = new JsonObjectRequest(Request.Method.GET, url, null, this, this);
  5.         rq.add(jrq);
  6.     }

Esa dirección tiene 2 array juntos uno que llamo brigadas, 15 registros y el otro array que llamo turnos que básicamente tiene un registro por cada dia del año, ahorita tiene como 90

Luego tengo esto
Código Java:
Ver original
  1. @Override
  2.     public void onResponse(JSONObject response) {
  3.         // Objeto AdminSQLiteOpenHelper
  4.         AdminSQLite adminsql = new AdminSQLite(getActivity(), "ochoa", null, 1);
  5.         // Abrir Base en modo lectura/escritura
  6.         SQLiteDatabase DBM = adminsql.getWritableDatabase();
  7.         // Borramos todo lo de las tablas Brigadas y Turnos
  8.         DBM.delete("brigada",null,null);
  9.         DBM.delete("turno",null,null);
  10.  
  11.         //Creamos objeto de la clase Brigadas
  12.         Brigadas brigadas = new Brigadas();
  13.  
  14.         // brigadas se llama mi array en el server
  15.         JSONArray jsonArrayBrigadas = response.optJSONArray("brigadas");
  16.         JSONObject jsonObjectBrigadas = null;
  17.  
  18.         // Resgistros del array
  19.         int arrayBrigadasLenght = jsonArrayBrigadas.length();
  20.  
  21.         for (int i = 0; i < arrayBrigadasLenght; i++){
  22.             try {
  23.                 jsonObjectBrigadas = jsonArrayBrigadas.getJSONObject(i);
  24.                 brigadas.setBrigada(jsonObjectBrigadas.optInt("brigada"));
  25.                 brigadas.setJefe(jsonObjectBrigadas.optString("jefe"));
  26.             } catch (JSONException e) {
  27.                 e.printStackTrace();
  28.             }
  29.  
  30.             // Variables para mostrar
  31.             int brigada = brigadas.getBrigada();
  32.             String jefe = brigadas.getJefe();
  33.  
  34.             // Toast.makeText(getActivity(),"Brigada: " + brigada + ", Jefe: " + jefe, Toast.LENGTH_SHORT).show();
  35.  
  36.             ContentValues registro = new ContentValues();
  37.             registro.put("brigada", brigada);
  38.             registro.put("jefe", jefe);
  39.  
  40.             DBM.insert("brigada", null, registro);
  41.         }
  42.         DBM.close();
  43.     }

Ahí voy al server remoto, traigo el array y lo inserto en mi tabla, hasta ahí todo bien.

El problema inicio cuando quiero hacer lo mismo con el 2do array y me dice que el JSONArray jsonArrayTurnos = response.optJSONArray("turnos"); es null y se crashea la app
Código Java:
Ver original
  1. @Override
  2.     public void onResponse(JSONObject response) {
  3.         // Objeto AdminSQLiteOpenHelper
  4.         AdminSQLite adminsql = new AdminSQLite(getActivity(), "ochoa", null, 1);
  5.         // Abrir Base en modo lectura/escritura
  6.         SQLiteDatabase DBM = adminsql.getWritableDatabase();
  7.         // Borramos todo lo de las tablas Brigadas y Turnos
  8.         DBM.delete("brigada",null,null);
  9.         DBM.delete("turno",null,null);
  10.  
  11.         //Creamos objeto de la clase Brigadas
  12.         Brigadas brigadas = new Brigadas();
  13.  
  14.         // brigadas se llama mi array en el server
  15.         JSONArray jsonArrayBrigadas = response.optJSONArray("brigadas");
  16.         JSONObject jsonObjectBrigadas = null;
  17.  
  18.         // Resgistros del array
  19.         int arrayBrigadasLenght = jsonArrayBrigadas.length();
  20.  
  21.         for (int i = 0; i < arrayBrigadasLenght; i++){
  22.             try {
  23.                 jsonObjectBrigadas = jsonArrayBrigadas.getJSONObject(i);
  24.                 brigadas.setBrigada(jsonObjectBrigadas.optInt("brigada"));
  25.                 brigadas.setJefe(jsonObjectBrigadas.optString("jefe"));
  26.             } catch (JSONException e) {
  27.                 e.printStackTrace();
  28.             }
  29.  
  30.             // Variables para mostrar
  31.             int brigada = brigadas.getBrigada();
  32.             String jefe = brigadas.getJefe();
  33.  
  34.             // Toast.makeText(getActivity(),"Brigada: " + brigada + ", Jefe: " + jefe, Toast.LENGTH_SHORT).show();
  35.  
  36.             ContentValues registro = new ContentValues();
  37.             registro.put("brigada", brigada);
  38.             registro.put("jefe", jefe);
  39.  
  40.             DBM.insert("brigada", null, registro);
  41.         }
  42.  
  43. // Creamos objeto de la clase Turnos
  44.         Turnos turnos = new Turnos();
  45.  
  46.         // turnos se llama mi array en el server
  47.         JSONArray jsonArrayTurnos = response.optJSONArray("turnos");
  48.         JSONObject jsonObjectTurnos = null;
  49.         // Resgistros del array
  50.         int arrayTurnosLenght = jsonArrayTurnos.length();
  51.  
  52.         for (int i = 0; i < arrayTurnosLenght; i++){
  53.             try {
  54.                 jsonObjectTurnos = jsonArrayTurnos.getJSONObject(i);
  55.                 turnos.setFecha(jsonObjectTurnos.optString("fecha"));
  56.                 turnos.setBrigadaTurno(jsonObjectTurnos.optInt("brigada"));
  57.             } catch (JSONException e) {
  58.                 e.printStackTrace();
  59.             }
  60.  
  61.             // Variables para mostrar
  62.             String fecha = turnos.getFecha();
  63.             int brigadaTurno = turnos.getBrigadaTurno();
  64.  
  65.              Toast.makeText(getActivity(),"Brigada: " + brigadaTurno + ", Fecha: " + fecha, Toast.LENGTH_SHORT).show();
  66.  
  67. //            ContentValues registro = new ContentValues();
  68. //            registro.put("fecha", fecha);
  69. //            registro.put("brigada", brigadaTurno);
  70. //
  71. //            DBM.insert("turno", null, registro);
  72.         }
  73.         DBM.close();
  74.     }

Busque info de como hacerlo y me tope con dos únicos sitios
Sitio 1, el cual adapte pero no pude traer ningun dato
Sitio 2, el que tiene casi que mi mismo problema pero no hubo solución. En este sitio le piden que haga un solo array pero no se si se aplica a mi pues yo tengo en un array 15 registros y en el otro muchisimos mas.

Les pido de favor su ayuda de como seria la mejor manera de poder descargar ambos arrays para poder continuar con mi proyecto.

Gracias
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.
  #2 (permalink)  
Antiguo 01/04/2019, 16:39
Avatar de KATHYU  
Fecha de Ingreso: julio-2013
Mensajes: 547
Antigüedad: 6 años, 4 meses
Puntos: 46
Respuesta: Como consultar 2 array con Volley

Listo.

Se debe tratar el response como array y no como object para poder jugar con los array que vienen dentro.
__________________
Al contrario de lo que muchos podrían afirmar, ayudar no te hace pobre, sino más rico.

Etiquetas: app, consultar, server, sql
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 06:38.