Volley 框架

Volley但是說是把AsyncHttpClient和Universal-Image-Loader的優勢集於了一身,既能夠像AsyncHttpClient同樣很是簡單地進行HTTP通訊,也能夠像Universal-Image-Loader同樣輕鬆加載網絡上的圖片。除了簡單易用以外,Volley在性能方面也進行了大幅度的調整,它的設計目標就是很是適合去進行數據量不大,但通訊頻繁的網絡操做,而對於大數據量的網絡操做,好比說下載文件等,Volley的表現就會很是糟糕。html

  獲取到一個RequestQueue對象,能夠調用以下方法獲取到:RequestQueue mQueue = Volley.newRequestQueue(context);  算法

  注意這裏拿到的RequestQueue是一個請求隊列對象,它能夠緩存全部的HTTP請求,而後按照必定的算法併發地發出這些請求。json

基本上在每個須要和網絡交互的Activity中建立一個RequestQueue對象就足夠了。數組

接下來爲了要發出一條HTTP請求,咱們還須要建立一個StringRequest對象,以下所示:緩存

public void volleyGet(){網絡

StringRequest  request=new StringRequest(Method.GET, "url", new Listener<String>() {併發

@Overrideide

public void onResponse(String arg0) {性能

// TODO Auto-generated method stub學習

}

}, new Response.ErrorListener() {

 

@Override

public void onErrorResponse(VolleyError arg0) {

// TODO Auto-generated method stub

}

});

MyApplication.getHttpQueue().add(request);

}

 

public void volleyPost(String... param) {

HashMap<String, String> hm = new HashMap<String, String>();

hm.put("requestPurpose", "1");

hm.put("username", param[0]);

hm.put("userpassword", param[1]);

NormalPostRequest request = new NormalPostRequest("url", new Response.Listener<JSONObject>() {

@Override

public void onResponse(JSONObject arg0) {

// TODO Auto-generated method stub

}

}, new Response.ErrorListener() {

@Override

public void onErrorResponse(VolleyError arg0) {

// TODO Auto-generated method stub

}

}, hm);

MyApplication.getHttpQueue().add(request);

}

. 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. });  
相關文章
相關標籤/搜索