在我的应用程序中,我需要按顺序发送多个抽签请求。 我已经创建了一个处理排球反应的公共监听器。如何在一个序列中发送多个抽签请求并在单个收听者中处理它们
public interface RequestCallBack {
void onSuccess(JSONObject jsonObject, String tag)
void OnError(String message);
}
并注册使用方法,这个回调:
public void setOnResponseListener (RequestCallBack onResponseListener) {
this.onResponseListener = onResponseListener;
}
我已经创造了一种凌空请求处理的常用方法。
public void getResponse(String tag, String url) {
JsonObjectRequest jsonObjectRequest;
try {
jsonObjectRequest = new JsonObjectRequest(Request.Method.GET,
url,null, new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
try {
mStatusCode = response.optInt("status_code");
mBody = response.optJSONObject("body");
if (mStatusCode != 0 && mStatusCode == 201) {
onResponseListener.onSuccess(mBody, (String) jsonObjectRequest.getTag());
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
onResponseListener.OnError(displayVolleyError(error));
}
}) {
@Override
protected VolleyError parseNetworkError(VolleyError volleyError) {
if (volleyError.networkResponse != null && volleyError.networkResponse.data != null) {
volleyError = new VolleyError(new String(volleyError.networkResponse.data));
}
return volleyError;
}
};
jsonObjectRequest.setRetryPolicy(new DefaultRetryPolicy(
REQUEST_TIMEOUT_MS,
NO_OF_RETRY_ATTEMPTS,
BACK_OF_MULTIPLIER));
// Adding request to request queue
AppController.getInstance().addToRequestQueue(jsonObjectRequest, tag);
} catch (Exception e) {
e.printStackTrace();
}
}
我叫从一类这个方法为:
classObject.getResponse("request1", firstUrl);
classObject.getResponse("request2", secondUrl);
而且我overrided的RequestCallBack接口方法。 但是里面的onSuccess方法每次返回第二个请求的标签。
@Override
public void onSuccess(JSONObject jsonObject, String tag) {
Log.d("Class", "tag: "+tag); // Always returns the "request2"
// Will check service response according to tag
// but didn't get the right tag.
}
@Override
public void OnError(String message) {
}
任何人都可以在这里建议我如何解决这个问题。
在此先感谢。
嘿,我还创建了一个通用的方法使用和截击发送请求。如果你需要我可以发布我的方法单身对象方法 –
我已经使用单身类创建请求队列。 –
您能否区分您获得的结果是从哪项服务中进行回收? –