无法读取截击返回的响应
Cannot read response returned from volley
我正在使用 volley 从 Web 服务获取一些数据。我正在使用以下格式来读取 volley 的响应。
我发出截击请求调用如下定义的方法,并在截击请求发生时显示 progressDialog
。
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);
}
我有一个通用的响应侦听器,它将 return 我的常量和如下响应
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);
}
};
}
并且我 reading/parsing activity 中的响应使用 Handlers
以下列方式
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((JSONArray) msg.obj);
break;
case Constant.MessageState.FAILED: // Constant declared in a public class
progressDialog.dismiss();
ShowError((VolleyError) msg.obj);
break;
}
它工作正常,但有时消息永远不会发送到 handler
并且 none 的案例是满意的,让我 progressDialog
无休止地加载。
这背后的原因可能是什么?
期待这方面的一些线索。 :)
谢谢。
我在同一线程中同时调用 Google 地图和截击服务。
像下面这样调用网络服务,它起作用了。
map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
//volley web service request.
}
});
我正在使用 volley 从 Web 服务获取一些数据。我正在使用以下格式来读取 volley 的响应。
我发出截击请求调用如下定义的方法,并在截击请求发生时显示 progressDialog
。
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);
}
我有一个通用的响应侦听器,它将 return 我的常量和如下响应
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);
}
};
}
并且我 reading/parsing activity 中的响应使用 Handlers
以下列方式
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((JSONArray) msg.obj);
break;
case Constant.MessageState.FAILED: // Constant declared in a public class
progressDialog.dismiss();
ShowError((VolleyError) msg.obj);
break;
}
它工作正常,但有时消息永远不会发送到 handler
并且 none 的案例是满意的,让我 progressDialog
无休止地加载。
这背后的原因可能是什么?
期待这方面的一些线索。 :)
谢谢。
我在同一线程中同时调用 Google 地图和截击服务。
像下面这样调用网络服务,它起作用了。
map.setOnMapLoadedCallback(new GoogleMap.OnMapLoadedCallback() {
@Override
public void onMapLoaded() {
//volley web service request.
}
});