Android:简单封装Volley StringRequest

来源:互联网 发布:java实现静态代理 编辑:程序博客网 时间:2024/04/28 12:47

毕业后进入公司开始进行商业app,网络请求几乎都是必须的,现有的第三方库Volley、okhttp、retrofit ,个人感觉入门级的应该就是Volley使用数据较小频繁的网络请求,毕竟做android开发,数据请求几乎是家常便饭,所以这里对简单的数据请求StringRequest进行了封装代码如下:

import android.os.Handler;import android.os.Message;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.JsonObjectRequest;import com.android.volley.toolbox.StringRequest;import com.android.volley.toolbox.Volley;import org.json.JSONObject;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.URL;import java.net.URLConnection;import java.util.HashMap;import java.util.Iterator;import java.util.Map;/** * Created by ZHL on 2016/8/24. * volley 访问 get post 封装 * 参数说明 * String url:接口访问网址 * final Handler handler:接口回调handler * final Map<String, String> map: post方式访问时参数(键值对) final int scode:接口成功返回message代码(正常返回,需要解析返回的json,解析数据或判断操作结果) final int ecode:接口失败返回message代码(异常) */public class VolleyRequest {    private static final String TAG_S = "-volley success-->";    private static final String TAG_E = "-volley error-->";    /**     * 简单的客户端 get请求     *     * @param url     * @param handler     */    public static void getStringRequest(String url, final Handler handler,                                        final int scode,final int ecode) {        try{            StringRequest request = new StringRequest(url, new Response.Listener<String>() {                @Override                public void onResponse(String response) {                    Log.i(TAG_S,"success:"+response.toString());                    Message msg = new Message();                    msg.what = scode;                    msg.obj = response.toString();                    handler.sendMessage(msg);                }            }, new Response.ErrorListener() {                @Override                public void onErrorResponse(VolleyError error) {                    Log.i(TAG_E, "error:"+error.toString());                    Message msg = new Message();                    msg.what = ecode;                    msg.obj = error.toString();                    handler.sendMessage(msg);                }            });            MyApplication.getHttpQueue().add(request);        }catch (Exception e){            Log.i(TAG_E, "Exception:"+e.toString());            handler.sendEmptyMessage(ecode);        }    }    /**     * 简单的客户端 post请求     *     * @param url     * @param handler     * @param map     */    public static void postStringRequest(String url, final Handler handler,                                         final Map<String, String> map,                                         final int scode,final int ecode) {        try{            StringRequest request = new StringRequest(Request.Method.POST, url,                    new Response.Listener<String>() {                        @Override                        public void onResponse(String response) {                            Log.i(TAG_S,"result:"+response.toString());                            Message msg = new Message();                            msg.what = scode;                            msg.obj = response.toString();                            handler.sendMessage(msg);                        }                    }, new Response.ErrorListener() {                @Override                public void onErrorResponse(VolleyError error) {                    Log.i(TAG_E,"error:"+error.toString());                    Message msg = new Message();                    msg.what = ecode;                    msg.obj = error.toString();                    handler.sendMessage(msg);                }            }){                @Override                protected Map<String, String> getParams() throws AuthFailureError {                    return map;                }            };            Log.i(TAG_S,"|url|"+url);            Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();            while (it.hasNext()) {                Map.Entry<String, String> entry = it.next();                Log.i(TAG_S,"|param|"+entry.getKey() + " = " + entry.getValue());            }            MyApplication.getHttpQueue().add(request);        }catch (Exception e){            Log.i(TAG_E, "Exception:"+e.toString());            handler.sendEmptyMessage(ecode);        }    }}

使用前提:

gradle引入volley库:(git地址)

compile 'com.mcxiaoke.volley:library:1.0.19'

初始化:

/** * Created by ZHL on 2016/8/18. */public class MyApplication extends Application{    private static MyApplication instance;    // 建立请求队列    public static RequestQueue queue;    public static RequestQueue getHttpQueue() {        return queue;    }    private static Context mContext;    private static String TAG="--Application info---->";    @Override    public void onCreate() {        super.onCreate();        queue = Volley.newRequestQueue(getApplicationContext());    }}

使用:

Map map = new HashMap();map.put("key1", "value1");map.put("key2", "value2");map.put("key3", "value3");....VolleyRequest.postStringRequest(URL,handler,map,SUCCESS_CODE,ERROR_CODE);

END

0 0