初步封装OkHttp

来源:互联网 发布:独立域名 编辑:程序博客网 时间:2024/06/03 16:55

知识点 1.单列模式

2.回调



public class OkManager {    private OkHttpClient client;    private volatile static OkManager manager;    private final String TAG = OkManager.class.getSimpleName();//获取当前类名    private Handler handler;    //提交json数据    private static final MediaType JSON = MediaType.parse("application/json;charset=utf-8");    //提交字符串    private static final MediaType MEDIA_TYPE_MARKDOWN = MediaType.parse("text/x-markdown");    private OkManager() {        client = new OkHttpClient();        handler = new Handler(Looper.getMainLooper());    }    //使用单例模式?????    public static OkManager getInstance() {        OkManager instance = null;        if (manager == null) {            synchronized (OkManager.class) {                if (instance == null) {                    instance = new OkManager();                    manager = instance;                }            }        }        return manager;    }    /**     * 在android 中不常用 会阻塞UI线程     */    public String syncGetByURL(String url) {        //构建一个Request请求        Request request = new Request.Builder().url(url).build();        Response response = null;        try {            //得到一个response回复            response = client.newCall(request).execute();//同步请求数据            if (response.isSuccessful()) {                return response.body().string();            }        } catch (IOException e) {            e.printStackTrace();        }        return null;    }    /**     * 通过指定url 返回json数据     */    public void asyncJsonStringByURL(String url, final Fun1 callBack) {        //构建一个Request请求        final Request request = new Request.Builder().url(url).build();        //返回处理是否成功        client.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Request request, IOException e) {            }            @Override            public void onResponse(Response response) throws IOException {                if (response != null && response.isSuccessful()) {                    //回调                    onSuccessJsonStringMethod(response.body().string(), callBack);                }            }        });    }    /**     * 请求返回的结果是json字符串     */    private void onSuccessJsonStringMethod(final String jsonValue, final Fun1 callBack) {        handler.post(new Runnable() {            @Override            public void run() {                if (callBack != null) {                    try {                        callBack.onResponse(jsonValue);                    } catch (Exception e) {                        e.printStackTrace();                    }                }            }        });    }    /**     * 返回响应结果是一个json对象     */    private void onSuccessJsonObjectMethod(final String jsonValue, final Fun4 callBack) {        handler.post(new Runnable() {            @Override            public void run() {                if (callBack != null) {                    try {                        callBack.onResponse(new JSONObject(jsonValue));                    } catch (JSONException e) {                        e.printStackTrace();                    }                }            }        });    }    /**     * 请求返回的是byte[] 数组     */    private void onSuccessByteMethod(final byte[] data, final Fun2 callBack) {        handler.post(new Runnable() {            @Override            public void run() {                if (callBack != null) {                    callBack.onResponse(data);                }            }        });    }    //声明回调函数    interface Fun1 {        void onResponse(String result);    }    interface Fun2 {        void onResponse(byte[] result);    }    interface Fun3 {        void onResponse(Bitmap result);    }    interface Fun4 {        void onResponse(JSONObject result);    }}




0 0
原创粉丝点击