Volley完全解析(一)使用篇

Volley這個(gè)類庫(kù),想必大家都聽(tīng)說(shuō)過(guò)了,這里也就不在介紹基礎(chǔ)知識(shí)了,廢話不多說(shuō),直接上代碼。
導(dǎo)入類庫(kù)
implementation 'com.android.volley:volley:1.1.1'
配置權(quán)限
<uses-permission android:name="android.permission.INTERNET"/>

Get請(qǐng)求示例:

// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列
RequestQueue requestQueue = Volley.newRequestQueue(this);
// 2 創(chuàng)建一個(gè)請(qǐng)求
String url = "http://192.168.3.6:8080/GetAndPostTest/MianTest";
StringRequest stringRequest = new StringRequest(url, new Response.Listener<String>() {
    // 正確接收數(shù)據(jù)回調(diào)
    @Override
    public void onResponse(String s) {
        Log.e("AppDebug", "onResponse: " + s);
    }
}, new Response.ErrorListener() {
    // 發(fā)生異常后的監(jiān)聽(tīng)回調(diào)
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Log.e("AppDebug", "onErrorResponse: " + volleyError);
    }
});

// 3 將創(chuàng)建的請(qǐng)求添加到請(qǐng)求隊(duì)列中
requestQueue.add(stringRequest);

Post請(qǐng)求示例:

// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列
RequestQueue requestQueue = Volley.newRequestQueue(this);
// 2 創(chuàng)建一個(gè)請(qǐng)求
String url = "http://192.168.3.6:8080/GetAndPostTest/MianTest";
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener<String>() {
    // 正確接收數(shù)據(jù)回調(diào)
    @Override
    public void onResponse(String s) {
        Log.e("AppDebug", "onResponse: " + s);
    }
}, new Response.ErrorListener() {
    // 發(fā)生異常后的監(jiān)聽(tīng)回調(diào)
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Log.e("AppDebug", "onErrorResponse: " + volleyError);
    }
}) {
    @Override
    protected Map<String, String> getParams() throws AuthFailureError {
        Map<String, String> map = new HashMap();
        map.put("name", "param1");
        return map;
    }
};

// 3 將創(chuàng)建的請(qǐng)求添加到請(qǐng)求隊(duì)列中
requestQueue.add(stringRequest);

注意:Post 請(qǐng)求是調(diào)用父類的getParams()方法獲得參數(shù)的。

Json請(qǐng)求示例:

// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列
RequestQueue requestQueue = Volley.newRequestQueue(this);

// 2 創(chuàng)建一個(gè)請(qǐng)求
String url = "http://192.168.3.6:8080/GetAndPostTest/MianTest";

JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(url, null, new Response.Listener<JSONObject>() {
    @Override
    public void onResponse(JSONObject jsonObject) {
        Log.e("AppDebug", "onResponse: "+jsonObject.toString());
    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError volleyError) {
        Log.e("AppDebug", "onErrorResponse: "+volleyError);
    }
});

// 3 將創(chuàng)建的請(qǐng)求添加到請(qǐng)求隊(duì)列中
requestQueue.add(jsonObjectRequest);

圖片請(qǐng)求示例:

mImg.setImageResource(android.R.color.white);
// 1 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列
RequestQueue requestQueue = Volley.newRequestQueue(this);
// 2 創(chuàng)建一個(gè)圖片的請(qǐng)求
String url = "http://img3.duitang.com/uploads/item/201510/11/20151011101817_fZ2hJ.thumb.700_0.jpeg";
ImageRequest imageRequest = new ImageRequest(url, new Response.Listener<Bitmap>() {
    @Override
    public void onResponse(Bitmap bitmap) {
        // 正確接收到圖片
        mImg.setVisibility(View.VISIBLE);
        mImg.setImageBitmap(bitmap);
    }
}, 0, 0, ImageView.ScaleType.CENTER, Bitmap.Config.RGB_565, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        //錯(cuò)誤處理
    }
});
// 3 將請(qǐng)求添加到請(qǐng)求隊(duì)列中
requestQueue.add(imageRequest);

ImageLoader 請(qǐng)求示例:

// 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列
RequestQueue requestQueue = Volley.newRequestQueue(this);
// 創(chuàng)建一個(gè)imageloader
ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());
// 加載圖片
String url = "http://img3.duitang.com/uploads/item/201510/11/20151011101817_fZ2hJ.thumb.700_0.jpeg";
mImg.setVisibility(View.VISIBLE);
ImageLoader.ImageListener imageListener =ImageLoader.getImageListener(mImg,android.R.color.transparent,android.R.color.black);
imageLoader.get(url, imageListener);

public class BitmapCache implements ImageLoader.ImageCache {
    private LruCache<String, Bitmap> mCache;

    public BitmapCache() {
        int maxSize = 10 * 1024 * 1024;// 10m
        mCache = new LruCache<String, Bitmap>(maxSize) {
            @Override
            protected int sizeOf(String key, Bitmap bitmap) {
                return bitmap.getRowBytes() * bitmap.getHeight();
            }
        };
    }

    @Override
    public Bitmap getBitmap(String url) {
        return mCache.get(url);
    }

    @Override
    public void putBitmap(String url, Bitmap bitmap) {
        mCache.put(url, bitmap);
    }
}

框架附帶NetworkImageView控件示例:

// 讓控件顯示
mNetworkImageView.setVisibility(View.VISIBLE);
// 默認(rèn)圖片和異常圖片設(shè)置
mNetworkImageView.setDefaultImageResId(android.R.color.transparent);
mNetworkImageView.setErrorImageResId(android.R.color.black);
// 創(chuàng)建一個(gè)請(qǐng)求隊(duì)列
RequestQueue requestQueue = Volley.newRequestQueue(MainActivity.this);
// 創(chuàng)建一個(gè)Imageloader
ImageLoader imageLoader = new ImageLoader(requestQueue, new BitmapCache());
// 加載圖片
String url = "http://img3.duitang.com/uploads/item/201510/11/20151011101817_fZ2hJ.thumb.700_0.jpeg";
mNetworkImageView.setImageUrl(url, imageLoader);

Volley基本用法也就以上幾種了,下面帶給大家的Volley進(jìn)階篇:Volley完全解析(二)自定義Request

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容