如何在volley
中编写单一通用请求,以处理任何类型的以下请求
JsonObject
JsonArray
答案 0 :(得分:0)
您可以根据使用情况制作自定义请求
public class CustomRequest extends Request<JSONObject> {
private Response.Listener<JSONObject> listener;
private Map<String, String> params;
private String check_url;
private Map<String, String> headers = new HashMap<String, String>();
public CustomRequest(String url, Map<String, String> params,
Response.Listener<JSONObject> reponseListener,
Response.ErrorListener errorListener) {
super(Method.GET, url, errorListener);
this.listener = reponseListener;
this.params = params;
check_url = url;
}
public CustomRequest(int method, String url, Map<String, String> params,
Response.Listener<JSONObject> reponseListener, Response.ErrorListener errorListener) {
super(method, url, errorListener);
this.listener = reponseListener;
this.params = params;
check_url = url;
}
protected Map<String, String> getParams()
throws com.android.volley.AuthFailureError {
return params;
};
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
return headers;
}
@Override
protected Response<JSONObject> parseNetworkResponse(NetworkResponse response) {
try {
String jsonString = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
return Response.success(new JSONObject(jsonString),HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException e) {
return Response.error(new ParseError(e));
} catch (JSONException je) {
return Response.error(new ParseError(je));
}
}
//In your extended request class
@Override
protected VolleyError parseNetworkError(VolleyError volleyError){
if(volleyError.networkResponse != null && volleyError.networkResponse.data != null){
VolleyError error = new VolleyError(new String(volleyError.networkResponse.data));
NetworkResponse response = volleyError.networkResponse;
Log.e("tag","parseNetworkError is ! null ");
Log.e("tag","parseNetworkError status code : " + response.statusCode);
Log.e("tag","parseNetworkError message : " + error.getLocalizedMessage());
//volleyError = error;
}else{
Log.e("","parseNetworkError is null ");
if (volleyError instanceof TimeoutError) {
Log.e("tag","TimeoutError:parseNetworkError:" + volleyError.getLocalizedMessage());
}else if (volleyError instanceof NoConnectionError) {
Log.e("tag","NoConnectionError:parseNetworkError:" + volleyError.getLocalizedMessage());
} else if (volleyError instanceof AuthFailureError) {
Log.e("tag","AuthFailureError:parseNetworkError:" + volleyError.getLocalizedMessage());
} else if (volleyError instanceof ServerError) {
Log.e("tag","ServerError:parseNetworkError:" + volleyError.getLocalizedMessage());
} else if (volleyError instanceof NetworkError) {
Log.e("tag","NetworkError:parseNetworkError:" + volleyError.getLocalizedMessage());
} else if (volleyError instanceof ParseError) {
Log.e("tag","ParseError:parseNetworkError:" + volleyError.getLocalizedMessage());
}
}
return volleyError;
}
@Override
protected void deliverResponse(JSONObject response) {
// TODO Auto-generated method stub
listener.onResponse(response);
}
}