当我尝试连接voley和JsonObjectRequest时从服务器收到null

时间:2016-11-26 17:22:53

标签: android json android-volley

我正在尝试从我的服务器获取数据,我放置了我的php文件,我正在调查检查我的代码有什么问题,我发现了以下内容:

当我尝试连接到url时出现错误,这里是单例类的代码:

public class VolleySingleton {

    private static VolleySingleton singleton;
    private RequestQueue requestQueue;
    private static Context context;


    private VolleySingleton(Context context) {
        VolleySingleton.context = context;
        requestQueue = getRequestQueue();
    }

    /**
     * Retorna la instancia unica del singleton
     * @param context contexto donde se ejecutarán las peticiones
     * @return Instancia
     */
    public static synchronized VolleySingleton getInstance(Context context) {
        if (singleton == null) {
            singleton = new VolleySingleton(context.getApplicationContext());
        }
        return singleton;
    }

    /**
     * Obtiene la instancia de la cola de peticiones
     * @return cola de peticiones
     */
    public RequestQueue getRequestQueue() {
        if (requestQueue == null) {
            requestQueue = Volley.newRequestQueue(context.getApplicationContext());
        }
        return requestQueue;
    }

    /**
     * Añade la petición a la cola
     * @param req petición
     * @param <T> Resultado final de tipo T
     */
    public <T> void addToRequestQueue(Request<T> req) {
        getRequestQueue().add(req);
    }
}

这里是调用单例的方法:

public void cargarAdaptador() {
        // Petición GET
        VolleySingleton.
                getInstance(getApplicationContext()).
                addToRequestQueue(
                        new JsonObjectRequest(
                                Request.Method.GET,
                               "http://taxiexpress.esy.es/obtener_usuarios.php",
                                null,
                                new Response.Listener<JSONObject>() {

                                    @Override
                                    public void onResponse(JSONObject response) {
                                        // Procesar la respuesta Json
                                        procesarRespuesta(response);
                                    }
                                },
                                new Response.ErrorListener() {
                                    @Override
                                    public void onErrorResponse(VolleyError error) {
                                        Log.d("test", "Error Volley: " + error.getMessage());
                                        Toast.makeText(getApplicationContext(),error.getMessage(),Toast.LENGTH_LONG);


                                    }
                                }

                        )
                );
    }




  private void procesarRespuesta(JSONObject response) {
        try {
            // Obtener atributo "estado"
            String estado = response.getString("estado");

            switch (estado) {
                case "1": // EXITO
                    // Obtener array "metas" Json
                    JSONArray mensaje = response.getJSONArray("metas");
                    // Parsear con Gson
                    Usuario[] metas = gson.fromJson(mensaje.toString(), Usuario[].class);
                  Toast.makeText(getApplicationContext(),metas[0].getMail(),Toast.LENGTH_LONG);
                    break;
                case "2": // FALLIDO
                    String mensaje2 = response.getString("mensaje");
                    Toast.makeText(
                            getApplicationContext(),
                            mensaje2,
                            Toast.LENGTH_LONG).show();
                    break;
            }

        } catch (JSONException e) {
            e.printStackTrace();
        }

    }

当程序执行addToRequestQueue指令时,调用单例类,然后我得到了之前发布的错误。

2 个答案:

答案 0 :(得分:0)

I have tried and debugged your code. The response is coming from your webservices as

{"estado":1,"usuarios":[{"mail":"gastondelacruz@gmail","password":"12345"},{"mail":"facu","password":"123"},{"mail":"mati@gmail","password":"12345"},{"mail":"testdrive","password":"12345"}]}

There is no error I have received.

答案 1 :(得分:0)

抱歉,伙计们是我的坏人,在我收到数据的方法中,我得到了以下说明:

JSONArray mensaje = response.getJSONArray("usuarios");

但我的php代码中的标记不同,这是错误的,非常感谢您的帮助。