Okhttp工具类封装
2017-09-14 09:01
399 查看
废话不多讲,直接上代码
package zhangxuelei1506d.utitls; import android.os.Handler; import org.json.JSONObject; import java.io.IOException; import java.util.Map; import okhttp3.Call; import okhttp3.Callback; import okhttp3.FormBody; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * Created by Administrator on 2017/9/6. * 1、okhttp的中级封装 实现两个功能 从服务器下载数据 从客户端提交数据 * 封装优秀的okhttp:okhttputils,okgo(更深入的封装研究okgo) * 2、节约内存,使所有的网络请求都用一个okhttpclient和handler对象 * 3、解决okhttp网络请求成功代码在子线程中的问题,把请求成功后的逻辑代码放到主线程中执行 * 简化代码量, * 知识点: 1、单例模式()2、handler 3、接口 4、okhttp */ public class OkHttpManager { public OkHttpClient mClient; //定义成员变量 public OkHttpClient okHttpClient; public static Handler mhandler; public volatile static OkHttpManager sManagerr; //使用构造方法完成初始化 私有化操作 private OkHttpManager() { mClient = new OkHttpClient(); mhandler = new Handler(); } //使用单例模式通过获取的方式拿到对象 public static OkHttpManager getinstance() { OkHttpManager instance = null; if (sManagerr == null) { synchronized (OkHttpManager.class) { if (instance == null) { instance = new OkHttpManager(); sManagerr = instance; } } } return sManagerr; } //定义接口 public interface Func1 { void onRespense(String resule); } public interface Func2 { void onResponse(byte[] result); } interface Func3 { void onResponse(JSONObject jsonObject); } //使handler接口保证 处理数据的逻辑在主线程中 //处理请求网络成功的方法,返回的结果是json字符串 private static void onsuccessjsonStringMethod(final String jsonValue, final Func1 callBack) { mhandler.post(new Runnable() { @Override public void run() { if (callBack != null) { try { callBack.onRespense(jsonValue); } catch (Exception e) { e.printStackTrace(); } } } }); } //处理请求网络成功的方法,返回的结果是字节 private static void onsuccessjsonStringMethod(final byte[] bytes, final Func2 callBack) { mhandler.post(new Runnable() { @Override public void run() { if (callBack != null) { try { callBack.onResponse(bytes); } catch (Exception e) { e.printStackTrace(); } } } }); } //暴漏提供给外界调用的方法 /** * 请求指定的url返回的结果是json字符串 */ public void asyncjsonstringByurl(String url, final Func1 callBack) { Request request = new Request.Builder().url(url).build(); mClient.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 sendComplexFrom(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 formBody = form_builder.build(); Request request = new Request.Builder().url(url).post(formBody).build(); mClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response != null && response.isSuccessful()) { onsuccessjsonStringMethod(response.body().string(), callBack); } } }); } //下载图片 public void LoadImage(String url, final Func2 callBack){ Request request = new Request.Builder().url(url).build(); mClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { if (response != null && response.isSuccessful()) { onsuccessjsonStringMethod(response.body().bytes(),callBack); } } }); } }
相关文章推荐
- OKhttp二次封装工具类
- OkHttp网络连接封装工具类
- 简单的封装了一个OKHttp网络请求工具类,直接粘贴进去调用使用,很方便
- OkHttp使用及工具类封装
- 封装OkHttp工具类
- OkHttp网络连接封装工具类以及json转换类
- okhttp传输封装的工具类
- OKHTTP带公共参数封装在方法中的工具类
- 封装OkHttp工具类
- okhttp封装工具类
- 仿京东APP分类页面(mvp模式+OkHttp封装工具类+拦截器+弱引用回收)
- 自己简单的封装一个OKHttp工具类
- 基于鸿洋okhttp封装工具类okhttputils 返回数据回调封装
- OKhttp封装的工具类 可以拷到自己项目中直接用
- Android Okhttp工具类的封装
- 网络请求工具类之OkHttp3封装(二)上(支持请求取消、异步请求的线程切换)
- Okhttp封装工具类
- 以OKHttp为基础封装网络请求工具类
- okhttp3简单封装GET和POST请求工具类
- 封装OKHttp,工具类