參考文檔: http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f73e7e808c027fa2ce0ac4384c413037bee43a7c4b54ce81273044b2141ebdac3574310023 ...
參考文檔:
http://www.2cto.com/kf/201504/388742.html
推薦:http://blog.csdn.net/richie0006/article/details/47069635
Volley可是說是把AsyncHttpClient和Universal-Image-Loader的優點集於了一身,既可以像AsyncHttpClient一樣非常簡單地進行HTTP通信,也可以像Universal-Image-Loader一樣輕鬆載入網路上的圖片。除了簡單易用之外,Volley在性能方面也進行了大幅度的調整,它的設計目標就是非常適合去進行數據量不大,但通信頻繁的網路操作,而對於大數據量的網路操作,比如說下載文件等,Volley的表現就會非常糟糕。
獲取到一個RequestQueue對象,可以調用如下方法獲取到:
1 RequestQueue mQueue = Volley.newRequestQueue(context);
註意這裡拿到的RequestQueue是一個請求隊列對象,它可以緩存所有的HTTP請求,然後按照一定的演算法併發地發出這些請求。
基本上在每一個需要和網路交互的Activity中創建一個RequestQueue對象就足夠了。
接下來為了要發出一條HTTP請求,我們還需要創建一個StringRequest對象,如下所示:
1 public void volleyGet(){ 2 3 StringRequest request=new StringRequest(Method.GET, "url", new Listener<String>() { 4 5 @Override 6 7 public void onResponse(String arg0) { 8 9 // TODO Auto-generated method stub 10 11 } 12 13 }, new Response.ErrorListener() { 14 15 16 17 @Override 18 19 public void onErrorResponse(VolleyError arg0) { 20 21 // TODO Auto-generated method stub 22 23 } 24 25 }); 26 27 MyApplication.getHttpQueue().add(request); 28 29 } 30 31 32 33 public void volleyPost(String... param) { 34 35 HashMap<String, String> hm = new HashMap<String, String>(); 36 37 hm.put("requestPurpose", "1"); 38 39 hm.put("username", param[0]); 40 41 hm.put("userpassword", param[1]); 42 43 NormalPostRequest request = new NormalPostRequest("url", new Response.Listener<JSONObject>() { 44 45 @Override 46 47 public void onResponse(JSONObject arg0) { 48 49 // TODO Auto-generated method stub 50 51 } 52 53 }, new Response.ErrorListener() { 54 55 @Override 56 57 public void onErrorResponse(VolleyError arg0) { 58 59 // TODO Auto-generated method stub 60 61 } 62 63 }, hm); 64 65 MyApplication.getHttpQueue().add(request); 66 67 }
. JsonRequest的用法
學完了最基本的StringRequest的用法,我們再來進階學習一下JsonRequest的用法。類似於StringRequest,JsonRequest也是繼承自Request類的,不過由於JsonRequest是一個抽象類,因此我們無法直接創建它的實例,那麼只能從它的子類入手了。JsonRequest有兩個直接的子類,JsonObjectRequest和JsonArrayRequest,從名字上你應該能就看出它們的區別了吧?一個是用於請求一段JSON數據的,一個是用於請求一段JSON數組的。
至於它們的用法也基本上沒有什麼特殊之處,先new出一個JsonObjectRequest對象,如下所示:
1 JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null, 2 new Response.Listener<JSONObject>() { 3 @Override 4 public void onResponse(JSONObject response) { 5 Log.d("TAG", response.toString()); 6 } 7 }, new Response.ErrorListener() { 8 @Override 9 public void onErrorResponse(VolleyError error) { 10 Log.e("TAG", error.getMessage(), error); 11 } 12 });