Android : Cannot read response returned from volley

on Wednesday, March 18, 2015


I am using volley to get some data from a web service. I'm using the following format to read responses from volley.


I make volley requests calling methods which are defined like below and I show a progressDialog when the volley request happens.



public static void GetDetails(String tag, Handler handler,
String Token,String TID){
String url = "http://myWebserviceMethod"

JsonArrayRequest jsArrRequest = new JsonArrayRequest(url,
ResponseListener.<JSONArray> createGenericReqSuccessListener(
handler, Constant.MessageState.SUCCESS),
ResponseListener.createErrorListener(handler,
Constant.MessageState.FAILED));

jsArrRequest.setShouldCache(false);
jsArrRequest.setRetryPolicy(new DefaultRetryPolicy(2 * 1000, 3, 1.0f));
MyGlobalClass.getInstance().addToRequestQueue(jsArrRequest);
}


I have a generic response listener which will return me a constant and the response like below



public class ResponseListener<T> {

public static <T> Response.Listener<T> createGenericReqSuccessListener(
final Handler handler, final int messageId) {
return new Response.Listener<T>() {
@Override
public void onResponse(T response) {
Message msg = new Message();
msg.arg1 = messageId;
msg.obj = response;
handler.sendMessage(msg);
}
};
}

public static Response.ErrorListener createErrorListener(
final Handler handler, final int messageId) {
return new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Message msg = new Message();
msg.arg1 = messageId;
msg.obj = error;
error.printStackTrace();
handler.sendMessage(msg);
}
};
}


and I'm reading/parsing the responses in the activity using Handlers in the following way



Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {

switch (msg.arg1) {
case Constant.MessageState.SUCCESS: // Constant declared in a public class
parseSaveResponse((JSONObject) msg.obj);
break;

case Constant.MessageState.FAILED: // Constant declared in a public class
progressDialog.dismiss();
ShowError((VolleyError) msg.obj);
break;
}


It works fine but some times the message never goes to the handler and none of the cases are satisfied, leaving me with the progressDialog endlessly loading.


What could be the reason behind this?


Looking forward for some leads on this. :)


Thanks.


0 comments:

Post a Comment