本文共 4119 字,大约阅读时间需要 13 分钟。
Download volley library and import it as a library project or make a jar file.
git clone https://android.googlesource.com/platform/frameworks/volley
Simple
Powerful
Extendable
Built-in memory cache
Built-in disk cache
Step 1 - Create request queue
RequestQueue requestQueue = Volley.newRequestQueue(context.getApplicationContext());
Step 2 - Create request
StringRequest request = new StringRequest( Request.Method.GET, url, listener, errorListener);
Step 3 - Create listeners
Response.Listenerlistener = new Response.Listener () { @Override public void onResponse(String response) { L.d("Success Response: " + response.toString()); }};Response.ErrorListener errorListener = new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { if (error.networkResponse != null) { L.d("Error Response code: " + error.networkResponse.statusCode); } }};
Step 4 - Add request to queue
requestQueue.add(request);
Request.Method.GET
Request.Method.POST
Request.Method.PUT
Request.Method.DELETE
Every request listener returns appropriate type.
String
Json Object
Json Array
Bitmap
Example of request which adds some cookie.
public class CookieRequest extends StringRequest { private String mCookieValue; public CookieRequest(String url, String cookieValue, Response.Listenerlistener, Response.ErrorListener errorListener) { super(Method.GET, url, listener, errorListener); mCookieValue = cookieValue; } @Override public Map getHeaders() throws AuthFailureError { Map map = new HashMap (); map.put("Cookie", mCookieValue); return map; }}
You need to override getParams() method.
StringRequest request = new StringRequest( Request.Method.POST, url, listener, errorListener) { @Override protected MapgetParams() throws AuthFailureError { Map map = new HashMap (); map.put("name", "Jon Doe"); map.put("age", "21"); return map; }};
StringRequest request = new StringRequest( Request.Method.GET, url, listener, errorListener);request.setRetryPolicy( new DefaultRetryPolicy( DefaultRetryPolicy.DEFAULT_TIMEOUT_MS, // 2500 DefaultRetryPolicy.DEFAULT_MAX_RETRIES, // 1 DefaultRetryPolicy.DEFAULT_BACKOFF_MULT)); //1f
StringRequest request = new StringRequest( Request.Method.GET, url, listener, errorListener) { @Override public MapgetHeaders() throws AuthFailureError { return createBasicAuthHeader("user", "passwd"); }};
MapcreateBasicAuthHeader(String username, String password) { Map headerMap = new HashMap (); String credentials = username + ":" + password; String base64EncodedCredentials = Base64.encodeToString(credentials.getBytes(), Base64.NO_WRAP); headerMap.put("Authorization", "Basic " + base64EncodedCredentials); return headerMap;}
StringRequest request1 = new StringRequest(...);request1.setTag("weather-screen"); // request tagStringRequest request2 = new StringRequest(...);request2.setTag("weather-screen"); // request tagrequestQueue.add(request1);requestQueue.add(request2);
To cancel request you just need to remember request tag and call cancelAll(...) method.
requestQueue.cancelAll("weather-screen"); // cancel all requests with "weather-screen" tag
SEE ALSO: