Volley简单封装
封装只是为了自我代码的高效与整洁
Volley是Google 提供的网络通信库,使得网络请求更简单、更快速
package com.czz.testhttp;
import android.content.Context;
import android.util.Log;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.StringRequest;
import com.android.volley.toolbox.Volley;
import java.util.Map;
/**
* Volley简单封装
* Created by czz on 2016/4/7.
*/
public class VolleyUtil {
private static final String TAG = VolleyUtil.class.getName();
private VolleyUtil() {
}
public interface DealS {
public void success(String s);
}
public interface DealE {
public void error(VolleyError error);
}
public interface DealFinal {
public void d_final();
}
/**
* Volley StringRequest get请求
*
* @param context 上下文
* @param url 请求网络地址
* @param ds 成功处理
* @param de 失败处理
*/
public static void get(Context context, String url, final DealS ds, final DealE de) {
get(context, url, ds, de, null);
}
/**
* Volley StringRequest get请求
*
* @param context 上下文
* @param url 请求网络地址
* @param ds 成功处理
* @param de 失败处理
* @param df 最终处理,比如不管请求成功还是失败都要关闭Dialog
*/
public static void get(Context context, String url, final DealS ds, final DealE de, final DealFinal df) {
RequestQueue mQueue = Volley.newRequestQueue(context);
StringRequest stringRequest = new StringRequest(url, new Response.Listener() {
@Override
public void onResponse(String s) {
if (null != ds) {
ds.success(s);
}
if (null != df) {
df.d_final();
}
Log.e(TAG, "请求成功 --> " + s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (null != de) {
de.error(error);
}
if (null != df) {
df.d_final();
}
Log.e(TAG, "请求失败 --> " + error.getMessage());
}
});
mQueue.add(stringRequest);
}
/**
* Volley StringRequest post请求
*
* @param context 上下文
* @param url 请求网络地址
* @param map 请求参数
* @param ds 成功处理
* @param de 失败处理
*/
public static void post(Context context, String url, final Map map, final DealS ds, final DealE de) {
post(context, url, map, ds, de, null);
}
/**
* Volley StringRequest post请求
*
* @param context 上下文
* @param url 请求网络地址
* @param map 请求参数
* @param ds 成功处理
* @param de 失败处理
* @param df 最终处理,比如不管请求成功还是失败都要关闭Dialog
*/
public static void post(Context context, String url, final Map map, final DealS ds, final DealE de, final DealFinal df) {
RequestQueue mQueue = Volley.newRequestQueue(context);
StringRequest stringRequest = new StringRequest(Request.Method.POST, url, new Response.Listener() {
@Override
public void onResponse(String s) {
if (null != ds) {
ds.success(s);
}
if(null != df){
df.d_final();
}
Log.e(TAG, "请求成功 --> " + s);
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
if (null != de) {
de.error(error);
}
if(null != df){
df.d_final();
}
Log.e(TAG, "请求失败 --> " + error.getMessage());
}
}) {
@Override
protected Map getParams() throws AuthFailureError {
if (null != map && map.size() != 0) {
return map;
}
return super.getParams();
}
};
mQueue.add(stringRequest);
}
}
调用例子:
public void getData() {
VolleyUtil.get(this, url, new VolleyUtil.DealS() {
@Override
public void success(String s) {
//tv.setText(s);
}
}, null);
}
public void postData() {
Map map = new HashMap<>();
map.put("userid", "10497");
map.put("startindex", "1");
map.put("pagenum", "10");
VolleyUtil.post(this, purl, map, new VolleyUtil.DealS() {
@Override
public void success(String s) {
}
}, null);
}