import com.android.volley.NetworkResponse; import com.android.volley.ParseError; import com.android.volley.Request; import com.android.volley.Response; import com.android.volley.Response.ErrorListener; import com.android.volley.Response.Listener; import com.android.volley.toolbox.HttpHeaderParser; import org.json.JSONException; import org.json.JSONObject; import java.io.UnsupportedEncodingException; import java.util.Map; public class CustomRequest extends Request<JSONObject> { private Listener<JSONObject> listener; private Map<String, String> params; public CustomRequest(String url, Map<String, String> params, Listener<JSONObject> reponseListener, ErrorListener errorListener) { super(Method.GET, url, errorListener); this.listener = reponseListener; this.params = params; } public CustomRequest(int method, String url, Map<String, String> params, Listener<JSONObject> reponseListener, ErrorListener errorListener) { super(method, url, errorListener); this.listener = reponseListener; this.params = params; } protected Map<String, String> getParams() throws com.android.volley.AuthFailureError { return params; } ; @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)); } } @Override protected void deliverResponse(JSONObject response) { // TODO Auto-generated method stub listener.onResponse(response); } }
After that, call this class from your activity ... LIKE THIS
RequestQueue requestQueue = VolleySingleton.getInstance().getRequestQueue(); CustomRequest jsObjRequest = new CustomRequest(Request.Method.POST, LOGIN_URL, params, new Response.Listener<JSONObject>() { @Override public void onResponse(JSONObject response) { Log.d("RESPONSE", response.toString()); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { VolleyLog.d("RESPONSE ERROR", "Error: " + error.getMessage()); } }); requestQueue.add(jsObjRequest);
You can create parameters as
Map<String, String> params = new HashMap<String, String>(); params.put("email", "yourEmail"); params.put("password", "yourPassword");
Other classes you need are VolleySingleton and RetriveMyApplicationContext
import android.graphics.Bitmap; import android.util.LruCache; import com.android.volley.RequestQueue; import com.android.volley.toolbox.ImageLoader; import com.android.volley.toolbox.Volley; public class VolleySingleton { private static VolleySingleton sInstance = null; private RequestQueue mRequestQueue; private ImageLoader imageLoader; private VolleySingleton() { mRequestQueue = Volley.newRequestQueue(RetriveMyApplicationContext.getAppContext()); imageLoader = new ImageLoader(mRequestQueue, new ImageLoader.ImageCache() { private LruCache<String, Bitmap> cache = new LruCache<>((int) (Runtime.getRuntime().maxMemory() / 1024 / 8)); @Override public Bitmap getBitmap(String url) { return cache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { cache.put(url, bitmap); } }); } public static VolleySingleton getInstance() { if (sInstance == null) { sInstance = new VolleySingleton(); } return sInstance; } public RequestQueue getRequestQueue() { return mRequestQueue; } public ImageLoader getImageLoader() { return imageLoader; } }
RetriveMyApplicationContext Class
public class RetriveMyApplicationContext extends Application { //Don't forget to mention RetriveMyApplicationContext Class in Manifests File otherwise it will throw NullPointer Exception // <application // android:name=".volley.RetriveMyApplicationContext" private static RetriveMyApplicationContext mRetriveMyApplicationContext; @Override public void onCreate() { super.onCreate(); mRetriveMyApplicationContext = this; } public static RetriveMyApplicationContext getInstance() { return mRetriveMyApplicationContext; } public static Context getAppContext() { return mRetriveMyApplicationContext.getApplicationContext(); } }