天天看點

Volley網絡請求資料架構

                                     Volley網路請求架構

      首先我們要先來解釋一下Volley這個東西是什麼?它要具體幹什麼?它的優勢及劣勢是什麼?我們一點點來吧。。。

我們先來說一下這個是什麼?根據官方說明:它是2013年Google I/O上釋出的一款網絡架構 基于Android 平台,能夠使網絡通信更快更簡單更健全等等

         說白了就是一個請求網路資料的架構

那它的優勢是什麼呢?(1) 網絡請求的排序;(2)網絡請求的優先級處理;(3)緩存;(4)多級别取消請求;(5)最重要的是非常适合去進行資料量不大;但通信頻繁的網絡操作;(6)可以自定義拓展等等

那它的劣勢:對于大資料量的網絡操作,比如說下載下傳檔案等 它的表現就不是很好

  下面我們來具體講解一下的步驟吧:

導入jar包

添加網絡權限

1 網路請求它分為三種 (1) get 請求;(2)post請求;(3)請求Json資料

2 get請求操作:

具體操作如下所示:

// 定義一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(GETActivity.this);
// 定義一個請求(參數:位址;正确監聽,錯誤監聽)
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
    @Override
    public void onResponse(String s) {

        Log.i("===s",s );

        // 将資料進行解析
        List<JsonBean.ResultBean.DataBean> dataList = initGson(s);
        // 設定擴充卡
        initAdapter(dataList);

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Log.i("---erro--",volleyError.toString());
    }
});

// 将建立的請求添加請求隊列中
requestQueue.add(stringRequest);      

接下來就是POST請求:

// 建立請求隊列
    RequestQueue requestQueue = Volley.newRequestQueue(POSTActivity.this);

    // 建立請求(參數:第一:請求方式 第二  接口位址  第三 成功請求  第四 錯誤請求)
    StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
        @Override
        public void onResponse(String s) {
            // 進行gson 解析資料
            List<JsonBean.ResultBean.DataBean> datas = initGson(s);
            // 進行擴充卡
            initAdapter(datas);

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError volleyError) {
            Toast.makeText(POSTActivity.this, "錯誤請求", Toast.LENGTH_SHORT).show();
        }
    });

    // 将請求添加到隊列中
    requestQueue.add(stringRequest);


}      

接下來的是請求Json資料

// 建立請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(JSONActivity.this);
/**
 * 首先 判斷資料 是什麼類型的
 * 1 對象 還是 數組
 * 2 對象:jsonObjectRequest  數組:jsonObjectRequest
 * 3 根據解析的資料 進行适配
 */
// 建立請求json(參數:第一 接口位址  第二 一般為null 第三 成功的請求  第四 錯誤的請求)
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject jsonObject) {
        String s = jsonObject.toString();
        // 進行json解析資料
        List<JsonBean.ResultBean.DataBean> datas = initGson(s);

        // 進行設定擴充卡
        initAdapter(datas);

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Toast.makeText(JSONActivity.this, "錯誤請求。。。", Toast.LENGTH_SHORT).show();
    }
});

// 将請求添加到隊列中
requestQueue.add(jsonObjectRequest);
      

切記 不要忘記将請求加到隊列中否則不顯示資料

imageRequest請求圖檔(注意是Volley包下的)

// 建立一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(context);
// 建立一個請求
ImageRequest imageRequest = new ImageRequest(list.get(position).getUrl(), new Response.Listener<Bitmap>() {
    @Override
    public void onResponse(Bitmap bitmap) {

        hoder.imageView.setImageBitmap(bitmap);

    }
}, 0, 0, Bitmap.Config.ALPHA_8, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        hoder.imageView.setImageResource(R.mipmap.ic_launcher);
    }
});
// 将請求添加進去圖檔請求
requestQueue.add(imageRequest);      

ImageLoder請求網絡圖檔

// 建立一個請求隊列
RequestQueue requestQueue = Volley.newRequestQueue(context);
// 建立一個ImageLoder(volley包下的)(擁有兩個參數{一個是請求隊列,一個是是否緩存機制})
ImageLoader imageLoader = new ImageLoader(requestQueue, new ImageLoader.ImageCache() {
    @Override
    public Bitmap getBitmap(String s) {
        return null;
    }

    @Override
    public void putBitmap(String s, Bitmap bitmap) {

    }
});
// 加載圖檔(參數:1 控件  2 預設圖檔  3 錯誤圖檔)
imageLoader.get(url,imageLoader.getImageListener(imageView,R.mipmap.ic_launcher,R.mipmap.ic_launcher));      

繼續閱讀