Volley简单封装--笔记

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);
    }


你可能感兴趣的:(android)