android OkHttp工具类
来源:互联网 发布:淘宝靠谱的美国代购 编辑:程序博客网 时间:2024/05/18 21:47
package com.jiyun.dell.xiongmaopindao.ui.tool.okhttptool;import com.google.gson.Gson;import com.jiyun.dell.xiongmaopindao.ui.App;import java.io.IOException;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import java.util.Map;import java.util.Set;import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;/** * Created by DELL zhanghuirong on 2017/11/20. */public class OkHttpUtil implements IHttp { private static OkHttpUtil okHttpUtil; private OkHttpClient okHttpClient; private OkHttpUtil() { okHttpClient = new OkHttpClient.Builder().build(); } public static OkHttpUtil getInstance() { if (okHttpUtil == null) { synchronized (OkHttpUtil.class) { if (okHttpUtil == null) { okHttpUtil = new OkHttpUtil(); } } } return okHttpUtil; } @Override public <T> void get(String url, Map<String, String> map, final NetWorkCallBack<T> netWorkCallBack) { if (map != null && map.size() > 1) { StringBuffer sb = new StringBuffer(url); sb.append("?"); //得到key Set<String> keySet = map.keySet(); for (String key : keySet) { sb.append(key).append("=").append(map.get(key)).append("&"); } url = sb.substring(0, sb.length() - 1); } final Request request = new Request.Builder().url(url).build(); Call call = okHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { netWorkCallBack.onError((T) e.getMessage()); } @Override public void onResponse(Call call, Response response) throws IOException { final String string = response.body().string(); App.context.runOnUiThread(new Runnable() { @Override public void run() { Gson gson = new Gson(); Type[] types = netWorkCallBack.getClass().getGenericInterfaces(); Type[] typeArguments = ((ParameterizedType) types[0]).getActualTypeArguments(); Type typeArgument = typeArguments[0]; T o = gson.fromJson(string, typeArgument); netWorkCallBack.onSuccess(o); } }); } }); } @Override public <T> void post(String url, Map<String, String> map, NetWorkCallBack<T> netWorkCallBack) { }}
//networkCallback类
public interface NetWorkCallBack<T> { void onSuccess(T str); void onError(T e);}
//Ihttp类
public interface IHttp { <T> void get(String url, Map<String, String> map, NetWorkCallBack<T> netWorkCallBack); <T> void post(String url, Map<String, String> map, NetWorkCallBack<T> netWorkCallBack);}
阅读全文
0 0
- android OkHttp工具类
- Android Okhttp工具类的封装
- okhttp框架 工具类
- 工具类4.0 OkHttp
- Okhttp 工具类
- okhttp工具类
- OkHttp工具类
- Okhttp工具类封装
- Okhttp工具类
- Okhttp封装工具类
- okhttp工具类
- 封装OkHttp工具类
- okhttp封装工具类
- OKHTTP工具类
- 封装OKHttp,工具类
- OkHttp网络解析工具类
- OKhttp的使用-工具类
- OkHttp网络连接工具类
- 《HTTP权威指南》学习笔记(6)第6章代理(关键词:计算机网络/HTTP/代理)
- C++ override及虚函数的讲解
- spring mvc json数据的格式化和数据校验
- 匠牛社区AM5728 HDMI接口测试
- Web前端慢加密
- android OkHttp工具类
- 敏捷开发 如何设计好看板?:敏捷看板成功实施的关键?如何通过看板实现项目可视化?
- html头部
- vue 弹广告
- Wellner 自适应阈值二值化算法
- 七天时间管理
- 一文读懂Android View事件分发机制
- git 常用命令
- Angular4自制一个市县二级联动组件