Okhttp的简单二次封装
2017-09-10 19:31
525 查看
写在前面:没什么说的,权当做一个工具类吧
public class OkHttpManager { ////////////////////// 定义成员变量////////////////////////// private OkHttpClient okHttpClient; private static android.os.Handler handler; private volatile static OkHttpManager sManager; // 防止多个线程同时访问 :volatile /////////////////////使用构造方法,完成初始化//////////////// private OkHttpManager(){ handler = new android.os.Handler(); okHttpClient = new OkHttpClient(); } ////////////////////使用单例模式,通过获取的方式拿到数据///////////////////// public static OkHttpManager getInstance(){ OkHttpManager instance = null; if(sManager == null){ synchronized (OkHttpManager.class){ if(instance == null){ instance = new OkHttpManager(); sManager = instance; } } } return sManager; } ///////////////////定义接口////////////////////// // 定义两个接口,用来接下来的调用进行接口回调 interface Func1{ void onRespone(String result); } interface Func2{ void onRespone(byte [] result); } interface Func3{ void onRespone(JSONObject jsonObject); } ////////////////////// 使用Handle,接口,保证处理数据的逻辑在主线程 //////////////////////// private static void onSuccessJsonStringMethod(final String jsonValue, final Func1 callBack){ // 这里使用的是Handle.post方法,把数据放到主线程中,可使用EventBus 或 RxJava 的线程调度器去完成 handler.post(new Runnable() { @Override public void run() { if(callBack != null){ try { callBack.onRespone(jsonValue); } catch (Exception e){ e.printStackTrace(); } } } }); } ////////////////////// 暴露一个提供给外界调用的接口 ///////////////////////////////// public void asyncJsonStringByUrl(String url,final Func1 callBack){ final Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { // 判断response是否有对象,成功 if(response != null && response.isSuccessful()){ onSuccessJsonStringMethod(response.body().string(),callBack); } } }); } /** * 下载图片 */ public void asynJsonByteByURL(String url,final Func2 callBack) { Request request = new Request.Builder().url(url).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { onSuccessJsonByteMethod(response.body().bytes(), callBack); } }); } /** * * 提交表单 * */ public void sendComplexForm(String url, Map<String,String> params, final Func1 callBack){ // 表单对象 FormBody.Builder form_builder = new FormBody.Builder(); // 键值非空判断 if(params != null && !params.isEmpty()){ for (Map.Entry<String,String>entry : params.entrySet()){ form_builder.add(entry.getKey(),entry.getValue()); } } FormBody request_Body = form_builder.build(); Request request = new Request.Builder().url(url).post(request_Body).build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { // 判断response是否有对象,成功 if(response != null && response.isSuccessful()){ onSuccessJsonStringMethod(response.body().string(),callBack); } } }); } /** * * 下载图片 * */ private static void onSuccessJsonByteMethod(final byte[] jsonValue, final Func2 callBack){ handler.post(new Runnable() { @Override public void run() { if(callBack != null) { try { callBack.onRespone(jsonValue); }catch (Exception e){ e.printStackTrace(); } } } }); }
相关文章推荐
- OKHttp简单二次封装
- [置顶] Retrofit和OkHttp简单的二次封装
- Okhttp简单的二次封装
- okhttp简单的二次封装
- Okhttp 简单的网络封装
- 对Fetch进行简单的二次封装
- Okhttp二次封装
- 简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便
- 超简单的okHttpUtils封装(下)
- OkHttp框架二次封装,post json格式的参数(上)
- OkHttp二次封装
- OkHttp二次封装,单例模式
- Android新手轻松学知乎日报开发(三)封装简单的OkHttp
- OkHTTP二次封装加拦截器
- 简单的封装Okhttp
- OkHttp简单封装
- OkHttp的简单封装(没有掌握,只是Copy)
- 创意封装OkHttp,简单易用,你还在等什么呢?
- RxJava2+Retrofit2+okHttp的二次封装
- OkHttp的简单封装-辅助框架