封装OKHttp
来源:互联网 发布:服装面料软件 编辑:程序博客网 时间:2024/06/08 00:03
自定义接口CallBack
public interface CallBack { void onSuccess(Object o); void onFailed(Exception e);}
封装OKHttp
public class OKHttpUtils { private static volatile OKHttpUtils instance; private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); } }; private OKHttpUtils(){ } public static OKHttpUtils getInstance(){ if (instance==null){ synchronized (OKHttpUtils.class){ if (instance==null){ instance=new OKHttpUtils(); } } } return instance; } public void get(String url, final CallBack callBa, final Class c){ //创建OKHttpClient对象 OkHttpClient client = new OkHttpClient(); //创建Request对象 Request request = new Request.Builder() .get() .url(url) .build(); //创建call对象 Call call = client.newCall(request); call.enqueue(new okhttp3.Callback() { @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { callBa.onFailed(e); } }); } @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); //拿到数据解析 final Object o = new Gson().fromJson(result, c); Log.e("data",result); //当前实在子线程,回到主线程 handler.post(new Runnable() { @Override public void run() { //回调 callBa.onSuccess(o); } }); } }); }}post请求(使用拦截器)
public class OkHttpUtils { private static volatile OkHttpUtils instance; private static Handler handler = new Handler(); //单例模式 private void OkHttpUtils() { } public static OkHttpUtils getInstance() { if (instance == null) { synchronized (OkHttpUtils.class) { if (instance == null) { instance = new OkHttpUtils(); } } } return instance; } //post请求 public void post(String url, Map<String,String> map, final CallBack callBack, final Class c){ //1:创建OkHttpClient对象 OkHttpClient okHttpClient = new OkHttpClient.Builder().addInterceptor(new Logger()).build(); //2:提供post请求需要的body对象 FormBody.Builder builder = new FormBody.Builder(); for(Map.Entry<String,String> entry:map.entrySet()){ builder.add(entry.getKey(),entry.getValue()); } FormBody body = builder.build(); //3:创建Request对象 final Request request = new Request.Builder() .post(body) .url(url) .build(); //4:创建Call对象 Call call = okHttpClient.newCall(request); //5:请求网络 call.enqueue(new Callback() { //请求失败 @Override public void onFailure(Call call, final IOException e) { handler.post(new Runnable() { @Override public void run() { callBack.onFailed(e); } }); } //请求成功 @Override public void onResponse(Call call, Response response) throws IOException { String result = response.body().string(); //拿到数据解析 final Object o = new Gson().fromJson(result, c); //当前是在子线程,回到主线程中 handler.post(new Runnable() { @Override public void run() { //回调 callBack.onSuccess(o); } }); } }); }}
阅读全文
0 0
- okhttp封装okhttp-utils
- 封装OKHttp
- 封装OkHttp
- okhttp封装
- 封装OKHttp
- 封装OKHttp
- Okhttp封装
- OkHttp 封装
- OkHttp封装
- OKHttp封装
- Okhttp封装
- okHttp封装
- OkHttp封装
- Okhttp封装
- 封装okhttp
- okhttp封装
- 封装okhttp
- Okhttp封装
- 第九届山东理工大学ACM网络编程擂台赛 正式赛 sdut4074博弈
- 【练习】制作简易通讯录
- 游戏开发——本身也是游戏
- 网络编程基础(一)
- 列表,字典
- 封装OKHttp
- Matlab 2015b 原先正常使用,突然让重新激活
- Linux基础命令详解之权限管理
- HDU--6063--RXD and math
- java作业gui1
- Socks
- 安卓使用videoview进行音频、视频播放,及播放控制
- 静态资源文件管理
- Hibernate事务处理