Cómo convertir un StringRequest en JSONObject con Android Studio

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.);

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.

La respuesta de Priyansh Bhatt es muy completa y mucho más detallada de lo que jamás escribiría.

Hower, agregaré solo algunas cosas:

No asigna un valor de StringRequest a un JSONObject. Debe asignar el valor de respuesta (de tipo String) al objeto JSONObject. Este valor de respuesta es la cadena devuelta por el servidor, después de que se le haya enviado la solicitud de cadena.

Sabiendo lo anterior, no puedes hacer:
JSONObject jObject = (StringRequest) solicitud; o
JSONObject jObject = (String) respuesta;

Debes hacer:
tratar {

JSONObject jObject = nuevo JSONObject (respuesta);

} catch (JSONException e) {

e.printStackTrace ();

}

Al hacer lo anterior, ¡probablemente creará su JSONObject con éxito!

Espero que estés usando Volley

nueva Response.Listener () {

@Override public void onResponse (respuesta de cadena) {
tratar {
JSONObject responseJsonObject = new JSONObject (respuesta);

} catch (JSONException e) {
Log.v (“JSonErr”, e.get message ());},
nueva Response.ErrorListener () {
@Anular
public void onErrorResponse (error VolleyError) {
Log.v (“resError”, error.getMessage ();}
}
Convierta su respuesta a JsonObject. Asegúrese de que su respuesta sea correcta JsonObject

More Interesting

¿Podemos aprender a hacer una aplicación de Android en seis semanas?

Cómo ejecutar una aplicación de Android sin instalarla

¿Cómo cobran los desarrolladores de Android para desarrollar la aplicación?

¿Cuáles son las aplicaciones de Android más populares en este momento?

Cómo conectar un servidor web a una aplicación móvil de Android

¿Cómo desarrollar una aplicación, como NewsHunt, en Android? ¿Cuáles son las cosas que se necesitan implementar en el proyecto?

¿Cuánto tiempo lleva desarrollar una buena aplicación de Android?

¿Cuál será el nombre del Android O recientemente presentado por Google?

Para el desarrollo de Android ahora estoy usando eclipse. Debido a la baja configuración de las respuestas del eclipse de la computadora portátil un poco lento, pero está bien. Estoy dispuesto a cambiar en el estudio de Android. ¿Funcionará bien en mi computadora portátil? (Estoy ejecutando Windows 7 como 8, 8.1, 10 muestra problemas)

¿Cómo puede un pequeño desarrollador de Android promocionar su aplicación?

¿Cuánto cuesta construir una aplicación de Android?

¿Qué base de datos debería usarse en el desarrollo de aplicaciones de Android?

¿Necesito conocer el desarrollo web, el desarrollo de Android o algunos proyectos de código abierto para una programación competitiva para hacer un buen perfil?

Hice mi primera aplicación de Android y salió bastante bien y tiene un excelente diseño. Ahora, ¿cómo puedo sacar provecho de mis habilidades?

¿Cuál es la diferencia entre publicar una aplicación a través de sitios web de creación de aplicaciones y Android Studio?