OkHttp工具类简单封装运用
来源:互联网 发布:药智网数据库vip 编辑:程序博客网 时间:2024/05/18 15:57
简单的OK封装运用
如需别的功能 ,请另寻他处
导入依赖:
compile 'com.google.code.gson:gson:2.8.1'compile 'com.squareup.okhttp3:okhttp:3.2.0'
//OkHttp工具类
private static ReentrantLock lock = new ReentrantLock(); private static volatile HttpUtils httpUtils; private final OkHttpClient okHttpClient; private Handler handler = new Handler(Looper.getMainLooper()); private static HashMap<String,String> headers = new HashMap<>(); static{ headers.put("client_type","android"); } private HttpUtils() { okHttpClient = new OkHttpClient(); } public static HttpUtils getInstance() { if (httpUtils == null) { lock.lock(); try { if (httpUtils == null) { httpUtils = new HttpUtils(); } } finally { lock.unlock(); } } return httpUtils; } public void doPost(String url, HashMap<String, String> params, final Class clazz, final OnNetListener onNetListener) { FormBody.Builder builder = new FormBody.Builder();// for (Map.Entry<String, String> entry : params.entrySet()) {// builder.add(entry.getKey(), entry.getValue());// }// RequestBody formBody = builder.build(); Request request = new Request.Builder() .url(url) .build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { if (onNetListener!=null){ onNetListener.onError(e); } } }); } @Override public void onResponse(Call call, final Response response) throws IOException { handler.post(new Runnable() { @Override public void run() { if (onNetListener!=null){// onNetListener.onSuccess(response); try { BaseBeen baseBena = (BaseBeen) new Gson().fromJson(response.body().string(), clazz); if (baseBena.getCode()==200){ onNetListener.onSuccess(baseBena); }else if(baseBena.getCode()==300){ //做相应的操作 } } catch (IOException e) { } } } }); } }); } /** * GET 请求 * * @param url * @param headerMap * @param onNetListener */ public void doGet(String url, HashMap<String, String> headerMap, final OnNetListener onNetListener) { if (headerMap == null || headerMap.size() == 0) { throw new RuntimeException("headerMap is null !!!!"); } Request.Builder builder = new Request.Builder(); builder.url(url); headers.putAll(headerMap); for (Map.Entry<String, String> entry : headers.entrySet()) { builder.addHeader(entry.getKey(), entry.getValue()); } Request request = builder.build(); okHttpClient.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { onNetListener.onError(e); } }); } @Override public void onResponse(Call call, final Response response) throws IOException { //默认返回结果在子线程当中 handler.post(new Runnable() { @Override public void run() { onNetListener.onSuccess(response); } }); } }); }
创建接口
public interface OnNetListener { public void onSuccess(Response response); public void onSuccess(BaseBeen baseBean); public void onError(IOException e);}
MainActivity运用
HttpUtils.getInstance().doPost(url, null, BaseBeen.class, new OnNetListener() { @Override public void onSuccess(Response response) { } @Override public void onSuccess(BaseBeen baseBean) { } @Override public void onError(IOException e) { }});
阅读全文
0 0
- OkHttp工具类简单封装运用
- 非常简单的OKhttp封装工具类
- Okhttp工具类封装
- Okhttp封装工具类
- 封装OkHttp工具类
- okhttp封装工具类
- 封装OKHttp,工具类
- 超简单的okhttp封装工具类(上)
- 自己简单的封装一个OKHttp工具类
- OKhttp二次封装工具类
- OKHttp的简单封装类
- OkHttp网络连接封装工具类
- okhttp传输封装的工具类
- OkHttp网络连接封装工具类
- Android Okhttp工具类的封装
- OkHttp使用及工具类封装
- okhttp的简单封装
- OkHTTp简单封装
- 作业
- js中数据结构数组Array、映射Map、集合Set、对象、JSON
- Lucene简单的使用配置详解
- 数据结构 P22-24 算法实现 线性表的插入与删除
- Okhttp3使用 + 源码完全解析
- OkHttp工具类简单封装运用
- 反素数
- 使用XV-11激光雷达做hector_slam
- 判断int是否溢出
- 输入一个数,求从一到那个数中1出现的个数
- 理解 Java oop
- java中的栈、堆以及equals和==的区别
- 一张1960年的珍贵的老照片
- js排序算法详解-冒泡排序