package com.android.volley.examples.toolbox.updated; import java.io.File; import org.json.JSONObject; import android.os.Bundle; import com.android.volley.DefaultRetryPolicy; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.VolleyError; import com.android.volley.examples.toolbox.MultipartRequest; import com.android.volley.examples.toolbox.MyVolley; import com.android.volley.toolbox.JsonObjectRequest; public class JSONRequestHandler { private int reqCode; private IJSONParseListener listner; private boolean hasFile = false; private boolean isRetryPolicyUpdated = false; private String file_path = "", key = ""; private boolean hasMultipleFiles = false; private Bundle fileBundle; /** The current timeout in milliseconds. */ private int mCurrentTimeoutMs; /** The maximum number of attempts. */ private int mMaxNumRetries; /** The backoff multiplier for for the policy. */ private float mBackoffMultiplier; public void getResponse(String url, final int requestCode, IJSONParseListener mParseListener) { getResponse(url, requestCode, mParseListener, null); } public void getResponse(String url, final int requestCode, IJSONParseListener mParseListener, Bundle params) { this.listner = mParseListener; this.reqCode = requestCode; Response.Listener<JSONObject> sListener = new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { if (listner != null) { listner.SuccessResponse(response, reqCode); } } }; Response.ErrorListener eListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (listner != null) { listner.ErrorResponse(error, reqCode); } } }; if (!hasFile) { JsonObjectRequest jsObjRequest = new JsonObjectRequest(Request.Method.GET, url, null, sListener, eListener); addToRequestQueue(jsObjRequest); } else { if (file_path != null) { File mFile = new File(file_path); MultipartRequest multipartRequest; if (hasMultipleFiles) { multipartRequest = new MultipartRequest(url, eListener, sListener, fileBundle, params); } else { multipartRequest = new MultipartRequest(url, eListener, sListener, key, mFile, params); } addToRequestQueue(multipartRequest); } else { throw new NullPointerException("File path is null"); } } } void addToRequestQueue(Request<?> request) { if (isRetryPolicyUpdated) { request.setRetryPolicy(new DefaultRetryPolicy(mCurrentTimeoutMs, mMaxNumRetries, mBackoffMultiplier)); } MyVolley.getRequestQueue().add(request); } /** * Constructs a new retry policy. * * @param initialTimeoutMs The initial timeout for the policy. * @param maxNumRetries The maximum number of retries. * @param backoffMultiplier Backoff multiplier for the policy. */ public void setRetryPolicy(int initialTimeoutMs, int maxNumRetries, float backoffMultiplier) { mCurrentTimeoutMs = initialTimeoutMs; mMaxNumRetries = maxNumRetries; mBackoffMultiplier = backoffMultiplier; isRetryPolicyUpdated = true; } public void setIntialTimeOut(int initialTimeoutMs) { mCurrentTimeoutMs = initialTimeoutMs; mMaxNumRetries = DefaultRetryPolicy.DEFAULT_MAX_RETRIES; mBackoffMultiplier = DefaultRetryPolicy.DEFAULT_BACKOFF_MULT; isRetryPolicyUpdated = true; } /** * @return hasFile whether file is set or not */ public boolean hasFile() { return hasFile; } /** * @param isFile the File to set for uploading... */ public void setFile(String param, String path) { hasMultipleFiles = false; if (path != null && param != null) { key = param; file_path = path; hasFile = true; } } public void setFile(Bundle b) { hasMultipleFiles = true; fileBundle = b; hasFile = true; } }