封装OkHttp工具类
来源:互联网 发布:淘宝丝袜买家秀 编辑:程序博客网 时间:2024/05/17 09:34
OkHttp的返回数据在子线程,所以经常用到Handler去结合使用,使我们的代码特别多,看起来特别乱,所以我就封装了一下,使得我们使用时获得的数据在主线程中,我封装了两种形式,一种是okhttp和handler结合,一种是okhttp和Rxjava结合,希望能够帮到大家。
1. okhttp和handler结合:
以下是需要的依赖:
compile 'com.squareup.okhttp3:okhttp:3.9.0' compile 'com.squareup.okio:okio:1.13.0'
首先说一下怎么使用吧:
OkHttpUtils.getInstance().doGet("http://news-at.zhihu.com/api/4/news/latest",callback);废话不多说,上工具类:
public abstract class OnUiCallback implements Callback { public abstract void onFailed(String eStr); public abstract void onSuccess(String result); private Observer observer=new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { onFailed(""); } @Override public void onNext(String o) { onSuccess(o); } }; @Override public void onFailure(Call call, IOException e) { String eStr=e.getMessage(); Observable.just(eStr).subscribe(observer); } @Override public void onResponse(Call call, Response response) throws IOException { String result=response.body().string(); Observable.just(result).observeOn(AndroidSchedulers.mainThread()).subscribe(observer); }}
public class OkHttpUtils { private static OkHttpUtils okHttpUtils=new OkHttpUtils(); private OkHttpUtils(){}; public static OkHttpUtils getInstance(){ return okHttpUtils; } private OkHttpClient client; private void initOkHttpClient(){ if (client==null){ client=new OkHttpClient.Builder().build(); } } public void doGet(String path, Callback callback){ initOkHttpClient(); Request request=new Request.Builder().url(path).build(); client.newCall(request).enqueue(callback); }}
2. okhttp和Rxjava结合:
加上Rxjava的依赖:
compile 'io.reactivex:rxjava:1.0.14' compile 'io.reactivex:rxandroid:1.0.1'使用方式:
OkHttpUtils.getInstance().doGet("", new OnUiCallback() { @Override public void onFailed(String eStr) { //失败 } @Override public void onSuccess(String result) { //成功 } });
public class OkHttpUtils { private static OkHttpUtils okHttpUtils=new OkHttpUtils(); private OkHttpUtils(){}; public static OkHttpUtils getInstance(){ return okHttpUtils; } private OkHttpClient client; private void initOkHttpClient(){ if (client==null){ client=new OkHttpClient.Builder().build(); } } public void doGet(String path, Callback callback){ initOkHttpClient(); Request request=new Request.Builder().url(path).build(); client.newCall(request).enqueue(callback); }}
public abstract class OnUiCallback implements Callback { public abstract void onFailed(String eStr); public abstract void onSuccess(String result); private Observer observer=new Observer<String>() { @Override public void onCompleted() { } @Override public void onError(Throwable e) { onFailed(""); } @Override public void onNext(String o) { onSuccess(o); } }; @Override public void onFailure(Call call, IOException e) { String eStr=e.getMessage(); Observable.just(eStr).subscribe(observer); } @Override public void onResponse(Call call, Response response) throws IOException { String result=response.body().string(); Observable.just(result).observeOn(AndroidSchedulers.mainThread()).subscribe(observer); }}
阅读全文
0 0
- Okhttp工具类封装
- Okhttp封装工具类
- 封装OkHttp工具类
- okhttp封装工具类
- 封装OKHttp,工具类
- OKhttp二次封装工具类
- OkHttp网络连接封装工具类
- 非常简单的OKhttp封装工具类
- okhttp传输封装的工具类
- OkHttp网络连接封装工具类
- Android Okhttp工具类的封装
- OkHttp使用及工具类封装
- OkHttp工具类简单封装运用
- OkHttp网络连接封装工具类以及json转换类
- OKhttp的封装工具类(可以直接使用)
- 以OKHttp为基础封装网络请求工具类
- 超简单的okhttp封装工具类(上)
- 自己简单的封装一个OKHttp工具类
- StreamToString
- 安卓okhttp的常见用法
- 算法导论16.2-2
- 07_Java基础语法_第7天(练习)
- 【排序】1.3快速排序
- 封装OkHttp工具类
- ImageLoaderjiand简单使用
- 实验报告(暂存)
- 1350:面朝大海 春暖花开 [ 基础版 ]
- AndroidStudio意外关闭,报红提示SetupJDK解决方法
- Hibernate4学习记录三(HibernateUtils工具类设计)
- HDU-6215 Brute Force Sorting(思维、模拟链表)
- 大数据1-HADOOP版本选择
- Gets函数