Volley的簡單使用

1.什麼是Volley

Google推出的一個網絡通訊框架,簡化了HttpURLConnection和HttpClient的操作方式。可以以極簡的方式執行get或post。
不過他還是有缺點的,執行post時添加參數較爲複雜。

2.導入jar包

gradle方式導入:

compile 'com.mcxiaoke.volley:library:1.0.19'

3.基本的HTTP請求

首先我們需要一個StringRequest對象,這個對象中將包含請求的地址,請求成功監聽器,請求失敗監聽器。
        StringRequest stringRequest = new StringRequest("http://baidu.com", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i("demo",response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("demo",error.getMessage(),error);
            }
        });

然後如何執行這個請求呢?我們需要將這個請求加入到Volley的請求隊列中。接下來將先獲取請求隊列。
注意這裏拿到的RequestQueue是一個請求隊列對象,它可以緩存所有的HTTP請求,然後按照一定的算法併發地發出這些請求。RequestQueue內部的設計就是非常合適高併發的,因此我們不必爲每一次HTTP請求都創建一個RequestQueue對象,這是非常浪費資源的,基本上在每一個需要和網絡交互的Activity中創建一個RequestQueue對象就足夠了。
requestQueue = Volley.newRequestQueue(this);
還要注意的是,因爲是要網絡請求,所以不要忘了加上網絡訪問的權限。
<uses-permission android:name="android.permission.INTERNET" />  

最後將請求加入到請求隊列中即可。
        requestQueue.add(stringRequest);

好了,現在運行程序,可以在控制檯中看到如下的輸出信息了。



以上是GET的請求方式,那如何執行POST請求呢?
只需使用StringRequest的另一個構造函數即可。
        StringRequest stringRequest = new StringRequest(StringRequest.Method.POST, "http://baidu.com", new Response.Listener<String>() {
            @Override
            public void onResponse(String response) {
                Log.i("demo", response);
            }
        }, new Response.ErrorListener() {
            @Override
            public void onErrorResponse(VolleyError error) {
                Log.e("demo", error.getMessage(), error);
            }
        });


4.HTTP請求JSON

JSON請求有兩種,分別是JsonObjectRequest和JsonArrayRequest。我們將使用JsonObjectRequest舉例。
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest("http://m.weather.com.cn/data/101010100.html", null,  
        new Response.Listener<JSONObject>() {  
            @Override  
            public void onResponse(JSONObject response) {  
                Log.d("demo", response.toString());  
            }  
        }, new Response.ErrorListener() {  
            @Override  
            public void onErrorResponse(VolleyError error) {  
                Log.e("demo", error.getMessage(), error);  
            }  
        });  

然後將這個請求如StringRequest一樣,加入到請求隊列中即可。





參考文章:http://www.kwstu.com/ArticleView/kwstu_20144118313429
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章