Android okhttp3封装
来源:互联网 发布:济南城市网络电视台 编辑:程序博客网 时间:2024/06/14 20:18
Okhttp确实是功能强大,高效率,简洁的网络请求框架,所以最近项目也集成了改框架,写了一个Manager管理类,整理下给大家看下。
*** * 使用OkHttp框架执行网络请求 * */public class OkHttpManager { private static final String TAG = "OkHttpManager"; //提交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;charset=utf-8"); public final static int CONNECT_TIMEOUT = 60; public final static int READ_TIMEOUT = 100; public final static int WRITE_TIMEOUT = 60; private static OkHttpManager mInstance; private OkHttpClient mOkHttpClient; private Handler handler; private OkHttpManager() { mOkHttpClient = new OkHttpClient.Builder() .connectTimeout(CONNECT_TIMEOUT, TimeUnit.SECONDS) .readTimeout(READ_TIMEOUT, TimeUnit.SECONDS) .writeTimeout(WRITE_TIMEOUT, TimeUnit.SECONDS) .build(); handler = new Handler(Looper.getMainLooper());//主线程处理 } public synchronized static OkHttpManager getInstance() { if (mInstance == null) { mInstance = new OkHttpManager(); } return mInstance; } public void getRequest(String url, final ResultCallback callback) { Request request = new Request.Builder().url(url).build(); deliveryResult(callback, request); } private void postRequest(String url, final ResultCallback callback, List<OkHttpParam> params) { Request request = buildPostRequest(url, params); } /** * post异步请求 * josn参数 * @param url * @param callback * @param json */ private void postRequest(String url, final ResultCallback callback, String json) { Request request = buildPostRequest(url, json); deliveryResult(callback, request); } private void deliveryResult(final ResultCallback callback, Request request) { mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { sendFailCallback(callback, e); } @Override public void onResponse(Call call, Response response) throws IOException { try { sendSuccessCallBack(callback, response); } catch (final Exception e) { sendFailCallback(callback, e); } } }); } /** * 异步请求 * * @param url * @param callBack */ public void getUrl(String url, final HttpCallBack callBack) { Request request = new Request.Builder().url(url).build(); mOkHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { callBack.onFailure(e); } @Override public void onResponse(Call call, Response response) throws IOException { callBack.onSuccess(response); } }); } /** * 上传文件 * * @param url * @param file * @param callback */ public void postFile(String url, File file, Callback callback) { RequestBody fileBody = RequestBody.create(MediaType.parse("application/octet-stream"), file); RequestBody requestBody = new MultipartBody.Builder().addFormDataPart("filename", file.getName(), fileBody).build(); Request requestPostFile = new Request.Builder() .url(url) .post(requestBody) .build(); mOkHttpClient.newCall(requestPostFile).enqueue(callback); } /** * 多个参数请求 * * @param url * @param params * @return */ private Request buildPostRequest(String url, List<OkHttpParam> params) { FormBody.Builder builder = new FormBody.Builder(); for (OkHttpParam param : params) { builder.add(param.key, param.value); } RequestBody formBody = builder.build(); return new Request.Builder().url(url).post(formBody).build(); } /** * json参数 * * @param url * @param json * @return */ private Request buildPostRequest(String url, String json) { RequestBody requestBody = RequestBody.create(JSON, json); return new Request.Builder().url(url).post(requestBody).build(); } private void sendFailCallback(final ResultCallback callback, final Exception e) { handler.post(new Runnable() { @Override public void run() { if (callback != null) { callback.onFailure(e); } } }); } private void sendSuccessCallBack(final ResultCallback callback, final Response response) { handler.post(new Runnable() { @Override public void run() { if (callback != null) { callback.onSuccess(response); } } }); } /** * get请求 * * @param url 请求url * @param callback 请求回调 */ public static void get(String url, ResultCallback callback) { getInstance().getRequest(url, callback); } public static void get(String url) { get(url, new ResultCallback() { @Override public void onSuccess(Response response) { } @Override public void onFailure(Exception e) { } }); } /** * post请求 * * @param url 请求url * @param callback 请求回调 * @param params 请求参数 */ public static void post(String url, List<OkHttpParam> params, final ResultCallback callback) { getInstance().postRequest(url, callback, params); } /** * post请求 * * @param url 请求url * @param callback 请求回调 * @param json 请求json */ public static void post(String url, String json, final ResultCallback callback) { getInstance().postRequest(url, callback, json); } /** * http请求回调类,回调方法在UI线程中执行 */ public static abstract class ResultCallback { /** * 请求成功回调 * * @param response */ public abstract void onSuccess(Response response); /** * 请求失败回调 * * @param e */ public abstract void onFailure(Exception e); } /** * post请求参数类 */ public static class OkHttpParam { String key; String value; public OkHttpParam() { } public OkHttpParam(String key, String value) { this.key = key; this.value = value; } } /** * 请求回调接口 */ public interface HttpCallBack { void onSuccess(Response response); void onFailure(Exception e); }
阅读全文
0 0
- Android okhttp3封装
- android okhttp3的封装
- Android OKHTTP3.4版本封装
- Android OkHttp3的二次封装
- OkHttp3封装
- okhttp3封装
- OkHttp3封装
- 封装OkHttp3
- Android Volley+OkHttp3+Gson 开源库的封装
- Android Volley+OkHttp3+Gson 开源库的封装
- Android Okhttp3了解及封装类使用
- Android Volley+OkHttp3+Gson 开源库的封装
- Android实战——okhttp3的使用和封装
- Android Volley+OkHttp3+Gson(Jackson)的封装过程
- android网络请求组件(一)OkHttp3的封装使用
- Android 订单管理,查询,修改,MVP,OkHttp3的二次封装,
- okHttp3自用封装
- okhttp3极简封装
- FFM模型在点击率预估中的应用实践
- mybatis-generator自动生成代码工具
- 进程同步实例
- JAVA设计模式之解释器模式
- 9.包装类
- Android okhttp3封装
- 测试百度统计
- 给你华为手机如何恢复数据的最全面的解决方法
- 就Android项目基本成型后,更换应用包名(package)的方法
- 卡方检验特征选择
- Java:String、StringBuffer和StringBuilder的区别
- 10.原型
- 智能语音推动双11进化:抢红包从动手到张嘴
- nodejs事件的监听与事件的触发