轉(zhuǎn)載劉望舒的博客Android網(wǎng)絡編程(三)Volley用法全解析
前言
Volley想必很多人都用過,為了建立網(wǎng)絡編程的知識體系嚷往,Volley是必須要講的知識點刁绒,所以我這里有必要再次介紹一下Volley的使用客年。
1.Volley簡介
在2013年Google I/O大會上推出了一個新的網(wǎng)絡通信框架Volley。Volley既可以訪問網(wǎng)絡取得數(shù)據(jù)娩脾,也可以加載圖片赵誓,并且在性能方面也進行了大幅度的調(diào)整,它的設計目標就是非常適合去進行數(shù)據(jù)量不大柿赊,但通信頻繁的網(wǎng)絡操作俩功,而對于大數(shù)據(jù)量的網(wǎng)絡操作,比如說下載文件等碰声,Volley的表現(xiàn)就會非常糟糕诡蜓。在使用Volley前請下載Volley庫并放在libs目錄下并add到工程中。 下載Volley請點擊這
2.Volley網(wǎng)絡請求隊列
Volley請求網(wǎng)絡都是基于請求隊列的胰挑,開發(fā)者只要把請求放在請求隊列中就可以了蔓罚,請求隊列會依次進行請求椿肩,一般情況下,一個應用程序如果網(wǎng)絡請求沒有特別頻繁則完全可以只有一個請求隊列(對應Application)豺谈,如果非常多或其他情況郑象,則可以是一個Activity對應一個網(wǎng)絡請求隊列,這就要看具體情況了茬末,首先創(chuàng)建隊列:
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
3.StringRequest的用法
StringRequest返回的數(shù)據(jù)是String類型的厂榛,我們查看下StringRequest的源碼:
public class StringRequest extends Request<String> {
private final Listener<String> mListener;
public StringRequest(int method, String url, Listener<String> listener, ErrorListener errorListener) {
super(method, url, errorListener);
this.mListener = listener;
}
public StringRequest(String url, Listener<String> listener, ErrorListener errorListener) {
this(0, url, listener, errorListener);
}
...省略}
有兩個構(gòu)造函數(shù),其中第一個比第二個多了一個請求的方法团南,如果采用第二個則默認是GET請求噪沙。好了炼彪,我們試著用GET方法來請求百度:
//創(chuàng)建請求隊列
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
StringRequest mStringRequest = new StringRequest(Request.Method.GET, "http://www.baidu.com", new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.i("wangshu", response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e("wangshu", error.getMessage(), error);
}
});
//將請求添加在請求隊列中
mQueue.add(mStringRequest);
當然別忘了添加網(wǎng)絡訪問權(quán)限:
<uses-permission android:name="android.permission.INTERNET"/>
4.JsonRequest的用法
和StringRequest類似吐根,我們直接上代碼:
RequestQueue mQueue = Volley.newRequestQueue(getApplicationContext());
JsonObjectRequest mJsonObjectRequest = new JsonObjectRequest(Request.Method.POST,"http://api.1-blog.com/biz/bizserver/article/list.do", new Response.Listener<JSONObject>() {
@Override public void onResponse(JSONObject response) {
Log.d("wangshu", response.toString());
}
}, new Response.ErrorListener() {
@Override public void onErrorResponse(VolleyError error) {
Log.e("wangshu", error.getMessage(), error);
}
} );
mQueue.add(mJsonObjectRequest);