Volley網絡請求框架的基本用法

備註: 本筆記是參照了 http://blog.csdn.net/ysh06201418/article/details/46443235  學習以後寫下的json

簡介:  Volley是google官網退出的一種流行的網絡請求框架,封裝了Android繁瑣的httpclient和HttpUrlConnection,使得咱們沒必要要寫更多繁瑣的代碼就可以很好的實現網絡通訊,同時AsyncHttpClient和ImageLoader集成於一身,既能夠像AsyncHttpClient同樣很是簡單地進行HTTP通訊,也能夠像Universal-Image-Loader同樣輕鬆加載網絡上的圖片。除了簡單易用以外,Volley在性能方面也進行了大幅度的調整,它的設計目標就是很是適合去進行數據量不大,但通訊頻繁的網絡操做,而對於大數據量的網絡操做,好比說下載文件等,Volley的表現就會很是糟糕。數組

Volley的用法:網絡

初始化:app

new 一個RequestQueue實例,而後把一些request添加上去便可框架

private RequestQueue mQueue = Volley.newRequestQueue(this);

1. StringRequest的用法:ide

 1                 StringRequest request = new StringRequest("http://www.baidu.com", new Response.Listener<String>() {
 2                     @Override
 3                     public void onResponse(String response) {
 4                         requestTextView.setText(response);
 5 
 6                     }
 7                 },new Response.ErrorListener(){
 8                     @Override
 9                     public void onErrorResponse(VolleyError error) {
10 
11                     }
12                 });
13                 mQueue.add(request);

這樣的話,一個最基本的HTTP發送與響應的功能就完成了。你會發現根本還沒寫幾行代碼就輕易實現了這個功能,主要就是進行了如下三步操做:post

1. 建立一個RequestQueue對象。性能

2. 建立一個StringRequest對象。學習

3. 將StringRequest對象添加到RequestQueue裏面。大數據

上面的是get請求,若是是post請求,那又該怎樣實現呢,Volley有本身的實現方法:StringRequest中並無提供設置POST參數的方法,可是當發出POST請求的時候,Volley會嘗試調用StringRequest的父類——Request中的getParams()方法來獲取POST參數,那麼解決方法天然也就有了,咱們只須要在StringRequest的匿名類中重寫getParams()方法,在這裏設置POST參數就能夠了,具體以下:

 1         StringRequest request = new StringRequest(Request.Method.POST, "", new Response.Listener<String>() {
 2             @Override
 3             public void onResponse(String response) {
 4 
 5             }
 6         }, new Response.ErrorListener() {
 7 
 8 
 9             @Override
10             public void onErrorResponse(VolleyError error) {
11 
12             }
13         }) {
14             @Override
15             protected Map<String, String> getParams() throws AuthFailureError {
16                 return super.getParams();
17             }
18         };
19         mQueue.add(request);

2. JsonRequest的用法

學完了最基本的StringRequest的用法,咱們再來進階學習一下JsonRequest的用法。相似於StringRequest,JsonRequest也是繼承自Request類的,不過因爲JsonRequest是一個抽象類,所以咱們沒法直接建立它的實例,那麼只能從它的子類入手了。JsonRequest有兩個直接的子類,JsonObjectRequest和JsonArrayRequest,從名字上你應該能就看出它們的區別了吧?一個是用於請求一段JSON數據的,一個是用於請求一段JSON數組的。

 1         JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("", null, new Response.Listener<JSONObject>() {
 2             @Override
 3             public void onResponse(JSONObject response) {
 4 
 5             }
 6         }, new Response.ErrorListener() {
 7             @Override
 8             public void onErrorResponse(VolleyError error) {
 9 
10             }
11         });

3.ImageRequest的用法

 1                 ImageRequest ir = new ImageRequest("http://www.dpfile.com/s/res/app-touch-icon-152x152.ee6d0c24fc2de0f9a62b6cc9e6720393.png", new Response.Listener<Bitmap>() {
 2                     @Override
 3                     public void onResponse(Bitmap response) {
 4                         // imageView.setImageBitmap(response);
 5                         ImageView iv = new ImageView(VolleyActivity.this);
 6                         //   iv.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 7                         iv.setImageBitmap(response);
 8                         imageLayout.addView(iv);
 9                     }
10                 }, 0, 0, Bitmap.Config.RGB_565, new Response.ErrorListener() {
11                     @Override
12                     public void onErrorResponse(VolleyError error) {
13 
14                     }
15                 });
16                 mQueue.add(ir);
相關文章
相關標籤/搜索