老婆保佑爪喘,代碼無BUG
目錄
- 引入
- 使用
- 文字信息處理
- get請(qǐng)求
- post請(qǐng)求
- 圖片下載
- 文字信息處理
- 封裝Volley
一. 引入
compile 'com.mcxiaoke.volley:library:1.0.19'
二.使用
1.文字信息處理
- 發(fā)送StringRequest請(qǐng)求(掌握)
GET
public void btn(View view) {
RequestQueue queue = Volley.newRequestQueue(this);
String url = "http://apis.juhe.cn/mobile/get?phone=18856907654&key=5778e9d9cf089fc3b093b162036fc0e1";
// 一柠衅,創(chuàng)建請(qǐng)求隊(duì)列對(duì)象簇捍,通常情況下,一個(gè)類中(或者說一個(gè)工程中)保持 始終使用同一個(gè)RequestQueue對(duì)象即可
/**
* 1. int 類型 用于指定請(qǐng)求的方式(如GET或者POST)
* 2. String類型 用于指定網(wǎng)絡(luò)請(qǐng)求要連接的網(wǎng)址
* 3. Listener類型 ,接收網(wǎng)絡(luò)響應(yīng)的接口稳摄,即只要得到本次請(qǐng)求對(duì)應(yīng)的返回結(jié)果
* 就會(huì)運(yùn)行此接口中的onResponse方法
* 4: ErrorListener類型, 用于接收當(dāng)網(wǎng)絡(luò)請(qǐng)求的過程中一旦發(fā)生了什么錯(cuò)誤,
* 就會(huì)調(diào)用本接口中的onErrorResponse方法
* */
StringRequest stringRequest = new StringRequest(StringRequest.Method.GET,url, new Response.Listener<String>() { Response.Listener<String>() {
@Override
public void onResponse(String response) {
Logger.e("response-->" + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Logger.e("response-->" + error.getMessage());
}
});
//三砰琢,給請(qǐng)求對(duì)象設(shè)置tag標(biāo)識(shí)
stringRequest.setTag("get");
//四,將請(qǐng)求添加到請(qǐng)求隊(duì)列中良瞧,執(zhí)行網(wǎng)絡(luò)請(qǐng)求
queue.add(stringRequest);
}
返回結(jié)果
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: ┌────────────────────────────────────────────────────────────────────────────────────────────────────────────────
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: │ Thread: main
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: │ MainActivity$1.onResponse (MainActivity.java:41)
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: │ MainActivity$1.onResponse (MainActivity.java:44)
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: ├┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄┄
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: │ response-->{"resultcode":"200","reason":"Return Successd!","result":{"province":"安徽","city":"合肥","areacode":"0551","zip":"230000","company":"移動(dòng)","card":""},"error_code":0}
11-27 06:38:46.464 4397-4397/com.allens.volleydemo E/PRETTY_LOGGER: └────────────────────────────────────────────────────────────────────────────────────────────────────────────────
POST請(qǐng)求
public void btn(View view) {
RequestQueue queue = Volley.newRequestQueue(this);
String postUrl = "http://apis.juhe.cn/mobile/get";
StringRequest stringRequest = new StringRequest(StringRequest.Method.POST, postUrl, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Logger.e("response-->" + response);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Logger.e("response-->" + error.getMessage());
}
}) {
/**
* Post請(qǐng)求和Get請(qǐng)求的使用步驟上的區(qū)別在于請(qǐng)求條件的指定
* 必須在StringRequest對(duì)象的后面添加{}陪汽,并且
* 在{}內(nèi)重寫getParams方法,該方法的返回值就是所有的請(qǐng)求條件
* */
@Override
protected Map<String, String> getParams() throws AuthFailureError {
//將請(qǐng)求條件封裝到map對(duì)象中
Map<String, String> map = new HashMap<>();
map.put("phone", "18856907654");
map.put("key", "5778e9d9cf089fc3b093b162036fc0e1");
return map;
}
};
//三褥蚯,給請(qǐng)求對(duì)象設(shè)置tag標(biāo)識(shí)
stringRequest.setTag("get");
//四挚冤,將請(qǐng)求添加到請(qǐng)求隊(duì)列中,執(zhí)行網(wǎng)絡(luò)請(qǐng)求
queue.add(stringRequest);
}
- 發(fā)送JsonObjectRequest請(qǐng)求(了解)
區(qū)別于StringRequest赞庶,特點(diǎn)在于:請(qǐng)求的結(jié)果直接被定義為一個(gè)JsonObject類型
2. 圖片下載
- 單張圖片下載
public void btn(View view) {
queue = Volley.newRequestQueue(this);
ImageRequest imageRequest = new ImageRequest(
"https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2019270811,1269730008&fm=27&gp=0.jpg", //對(duì)應(yīng)圖片的下載地址
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
Logger.e("response---->" + response);
}
}, 200, 200,// 指定下載后圖片的最大寬高
ImageView.ScaleType.FIT_XY,//指定圖片的縮放模式
Bitmap.Config.ARGB_8888,//指定圖片的編碼格式
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Logger.e("error--->" + error);
}
});
queue.add(imageRequest);
}
- 多張圖片下載
定義ImageCache
package com.allens.volleydemo;
import android.graphics.Bitmap;
import android.util.LruCache;
import com.android.volley.toolbox.ImageLoader;
/**
* .分配一定內(nèi)存空間训挡,專門存取圖片,一般為內(nèi)存大小的1/8
* Created by allens on 2017/11/28.
*/
public class MyImageCache implements ImageLoader.ImageCache {
private LruCache<String, Bitmap> mCache;
public MyImageCache() {
//分配最大內(nèi)存空間的1/8
long maxMemory = Runtime.getRuntime().maxMemory() / 8;
mCache = new LruCache<String, Bitmap>((int) maxMemory) {
@Override
protected int sizeOf(String key, Bitmap value) {
//得到當(dāng)前圖片的大小
return value.getByteCount();
}
};
}
@Override
public Bitmap getBitmap(String url) {
return mCache.get(url);
}
@Override
public void putBitmap(String url, Bitmap bitmap) {
if (getBitmap(url) == null)
mCache.put(url, bitmap);
}
}
- 使用 ImageLoader
ImageLoader loader = new ImageLoader(queue, new MyImageCache());
loader.get("https://ss1.bdstatic.com/70cFvXSh_Q1YnxGkpoWK1HF6hhy/it/u=2019270811,1269730008&fm=27&gp=0.jpg", //圖片的下載路徑
//通過getImageListener方法獲取ImageListener接口對(duì)象
/*
* 參數(shù)1: 圖片下載完成后歧强,由哪個(gè)控件顯示圖片
* 參數(shù)2:設(shè)置圖片下載過程中顯示的默認(rèn)圖片
* 參數(shù)3: 設(shè)置一旦圖片下載出錯(cuò)澜薄,就顯示出錯(cuò)提示圖片
* */
ImageLoader.getImageListener(imageView, R.mipmap.ic_launcher, R.mipmap.ic_launcher)
, 200, 200, //圖片的最大寬高
ImageView.ScaleType.FIT_XY //圖片的縮放模式
)
三.封裝
快醒醒
封裝地址 點(diǎn)擊查看
參考
Android Volley完全解析(一),初識(shí)Volley的基本用法
Android Volley完全解析(二)摊册,使用Volley加載網(wǎng)絡(luò)圖片