Dado que no ha publicado la parte real en la que intenta convertir StringRequest en un objeto JSON o no ha incluido ningún detalle sobre cuándo encontró este error en particular, será difícil predecir el problema con precisión con información tan inadecuada.
Muy bien, así que primero verifica si estás creando una instancia de StringRequest correctamente. Un objeto StringRequest consta de cuatro partes:
1. El tipo de método (GET o POST, etc.);
- ¿Hay alguna forma de previsualizar / emular, en línea, su aplicación web tal como aparece en varios dispositivos Android?
- ¿Cómo usa Android WiFi para obtener su ubicación actual con tanta precisión?
- ¿Qué idiomas se deben aprender para desarrollar una aplicación de Android?
- ¿Por qué alguien preferiría Android a iOS?
- ¿Qué sistema de archivos se usa en los dispositivos Android?
2. La URL en la que desea realizar la solicitud;
3. El oyente de respuesta que captará las respuestas;
4. El oyente de respuesta de error que detectará los errores.
Ahora, la parte que ha mencionado en su código depende del oyente de respuesta, asegúrese de que también incluye el oyente de respuesta de error, aunque el IDE debería haber marcado esto como un error, pero, estoy comenzando desde lo básico para que Puede ayudar a alguien nuevo en las llamadas de red en el futuro.
Comience por verificar el método que ha utilizado, si solo está obteniendo la información de los servidores y mostrándola al usuario, debe configurar el método como GET , si se supone que el usuario debe agregar alguna información propia que será enviado de vuelta a los servidores y luego usar POST y like-wise. Por lo tanto, si está creando una aplicación que mostrará una lista de películas, idealmente , debe usar el método ‘OBTENER’ para obtener la información de los servidores; cuando el usuario publica una reseña de la película o le da una calificación, idealmente, debe usar un método ‘POST’ para enviar los datos a los servidores.
Si el método de solicitud es correcto, pase a la url en la que desea realizar la solicitud. Simplemente pegue la URL en su navegador y verifique los datos que recibe. Si obtiene una respuesta que es demasiado grande para comprender, use un formateador JSON para formatear la respuesta y poder leerla. Verifique la URL, esta es la razón más común para los errores de tiempo de ejecución.
Ahora, finalmente llegando a la parte principal, en el Escucha de respuesta, comience creando un nuevo objeto JSON, tenga en cuenta que no podrá usar este objeto directamente. Debe envolverlo en un bloque try / catch para que, en caso de falla, la aplicación no se bloquee. Idealmente, si está utilizando un IDE, hará toda la codificación en el bloque try-catch por usted. De lo contrario, siempre puede implementar manualmente el bloque try-catch. Si aún no está seguro, simplemente desplácese hacia abajo, le he dado el código básico requerido para crear un objeto JSON desde StringResponse.
Puede dejar el Escucha de respuesta de errores en blanco y aún así no habrá mucha diferencia, pero se recomienda que notifique al usuario que la aplicación está teniendo algunos problemas para que no espere infinitamente …
Ahora, la parte final, aquí está el código principal para crear un objeto JSON a partir de la respuesta que obtienes:
String tempURL = “www.google.com”;
// No sé si google tiene una API, pero es solo para demostración …
// Usaré el método ‘GET’, puedes reemplazar el ‘GET’ con POST o cualquier cosa …
StringRequest stringRequest = new StringRequest (Request.Method.GET, tempURL,
nueva Response.Listener () {
@Anular
public void onResponse (respuesta de cadena) {
/ * Aquí es donde se recibe la respuesta y la aplicación reacciona en consecuencia. * /
tratar {
JSONObject parentObject = new JSONObject (respuesta);
/ * Aquí ‘respuesta’ es una Cadena que contiene la respuesta que recibió del sitio web … * /
} catch (JSONException e) {
e.printStackTrace ();
}
}
}, nueva Response.ErrorListener () {
@Anular
public void onErrorResponse (error VolleyError) {
}
});
Por último, antes de que termine, permíteme recordarte que hasta ahora solo has pedido a la aplicación que se prepare para hacer una llamada de red, en realidad no has hecho la llamada de red hasta ahora, así que solo agrega estas líneas:
RequestQueue requestQueue = Volley.newRequestQueue (getContext ());
requestQueue.add (stringRequest);
// Aquí ‘stringRequest’ es el objeto que creé usando la clase StringRequest.
En el pasado, me he olvidado varias veces de realizar una llamada de red, este es un error común cometido por todos, desde principiantes hasta profesionales.