我正在尝试从我的服务器获取数据,我放置了我的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指令时,调用单例类,然后我得到了之前发布的错误。
答案 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
代码中的标记不同,这是错误的,非常感谢您的帮助。