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