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// Funcion para consultar todas las Brigadas en server remoto
private void descargarBrigadas(){
String url
= "https://www.simcrs.org.sv/OCHOA/apiRestOCHOA"; jrq
= new JsonObjectRequest
(Request.
Method.
GET, url,
null,
this,
this); rq.add(jrq);
}
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@Override
public void onResponse(JSONObject response) {
// Objeto AdminSQLiteOpenHelper
AdminSQLite adminsql = new AdminSQLite(getActivity(), "ochoa", null, 1);
// Abrir Base en modo lectura/escritura
SQLiteDatabase DBM = adminsql.getWritableDatabase();
// Borramos todo lo de las tablas Brigadas y Turnos
DBM.delete("brigada",null,null);
DBM.delete("turno",null,null);
//Creamos objeto de la clase Brigadas
Brigadas brigadas = new Brigadas();
// brigadas se llama mi array en el server
JSONArray jsonArrayBrigadas = response.optJSONArray("brigadas");
JSONObject jsonObjectBrigadas = null;
// Resgistros del array
int arrayBrigadasLenght = jsonArrayBrigadas.length();
for (int i = 0; i < arrayBrigadasLenght; i++){
try {
jsonObjectBrigadas = jsonArrayBrigadas.getJSONObject(i);
brigadas.setBrigada(jsonObjectBrigadas.optInt("brigada"));
brigadas.setJefe(jsonObjectBrigadas.optString("jefe"));
} catch (JSONException e) {
e.printStackTrace();
}
// Variables para mostrar
int brigada = brigadas.getBrigada();
String jefe
= brigadas.
getJefe();
// Toast.makeText(getActivity(),"Brigada: " + brigada + ", Jefe: " + jefe, Toast.LENGTH_SHORT).show();
ContentValues registro = new ContentValues();
registro.put("brigada", brigada);
registro.put("jefe", jefe);
DBM.insert("brigada", null, registro);
}
DBM.close();
}
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@Override
public void onResponse(JSONObject response) {
// Objeto AdminSQLiteOpenHelper
AdminSQLite adminsql = new AdminSQLite(getActivity(), "ochoa", null, 1);
// Abrir Base en modo lectura/escritura
SQLiteDatabase DBM = adminsql.getWritableDatabase();
// Borramos todo lo de las tablas Brigadas y Turnos
DBM.delete("brigada",null,null);
DBM.delete("turno",null,null);
//Creamos objeto de la clase Brigadas
Brigadas brigadas = new Brigadas();
// brigadas se llama mi array en el server
JSONArray jsonArrayBrigadas = response.optJSONArray("brigadas");
JSONObject jsonObjectBrigadas = null;
// Resgistros del array
int arrayBrigadasLenght = jsonArrayBrigadas.length();
for (int i = 0; i < arrayBrigadasLenght; i++){
try {
jsonObjectBrigadas = jsonArrayBrigadas.getJSONObject(i);
brigadas.setBrigada(jsonObjectBrigadas.optInt("brigada"));
brigadas.setJefe(jsonObjectBrigadas.optString("jefe"));
} catch (JSONException e) {
e.printStackTrace();
}
// Variables para mostrar
int brigada = brigadas.getBrigada();
String jefe
= brigadas.
getJefe();
// Toast.makeText(getActivity(),"Brigada: " + brigada + ", Jefe: " + jefe, Toast.LENGTH_SHORT).show();
ContentValues registro = new ContentValues();
registro.put("brigada", brigada);
registro.put("jefe", jefe);
DBM.insert("brigada", null, registro);
}
// Creamos objeto de la clase Turnos
Turnos turnos = new Turnos();
// turnos se llama mi array en el server
JSONArray jsonArrayTurnos = response.optJSONArray("turnos");
JSONObject jsonObjectTurnos = null;
// Resgistros del array
int arrayTurnosLenght = jsonArrayTurnos.length();
for (int i = 0; i < arrayTurnosLenght; i++){
try {
jsonObjectTurnos = jsonArrayTurnos.getJSONObject(i);
turnos.setFecha(jsonObjectTurnos.optString("fecha"));
turnos.setBrigadaTurno(jsonObjectTurnos.optInt("brigada"));
} catch (JSONException e) {
e.printStackTrace();
}
// Variables para mostrar
String fecha
= turnos.
getFecha(); int brigadaTurno = turnos.getBrigadaTurno();
Toast.makeText(getActivity(),"Brigada: " + brigadaTurno + ", Fecha: " + fecha, Toast.LENGTH_SHORT).show();
// ContentValues registro = new ContentValues();
// registro.put("fecha", fecha);
// registro.put("brigada", brigadaTurno);
//
// DBM.insert("turno", null, registro);
}
DBM.close();
}
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