Android网络请求Volley详解
在Android Studio中导入Volley
compile 'com.mcxiaoke.volley:library:1.0.19'
Volley进行网络请求需先创建一个Request对象,并将其加入RequestQueue中发送请求
一、Resquest对象
1、GET请求
请求字符串
StringRequest stringGetRequest = new StringRequest(
Request.Method.GET,
"url",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
error.printStackTrace();
}
}
);
请求JSON
JsonObjectRequest jsonGetRequest = new JsonObjectRequest(
Request.Method.GET,
"url",
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
if (response == null) return;
try {
int total = response.getInt("total");
} catch (Exception e) {
e.printStackTrace();
}
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
2、POST请求
StringRequest stringRequest = new StringRequest(
Request.Method.POST,
"url",
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}) {
//上传参数 键值对
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String, String> map = new HashMap<>();
map.put("K1", "V1");
map.put("K2", "V2");
return map;
}
//上传往http协议里面添加头部键值对
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
HashMap<String, String> headers = new HashMap<String, String>();
headers.put("k1", "v1");
headers.put("k2", "v2");
return headers;
}
};
3、请求图片
ImageRequest imageRequest = new ImageRequest(
"url",
new Response.Listener<Bitmap>() {
@Override
public void onResponse(Bitmap response) {
}
},
0,//宽
0,//高
ImageView.ScaleType.CENTER,
Bitmap.Config.ARGB_8888,//RGB_565小图标
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
二、RequestQueue
RequestQueue queue = Volley.newRequestQueue(context);
queue.add(request);