okhttp 2.x 用法/封装
来源:互联网 发布:王子长 知乎 编辑:程序博客网 时间:2024/06/04 00:23
okhttp 2.x 用法/封装
android的网络框架okhttp被普遍使用,包括现在比较强大的retrofit也是封装okhttp 简单了解okhttp(get/post):
//get请求:
private void getRequest() { //创建okHttpClient对象 OkHttpClient mOkHttpClient = new OkHttpClient(); final Request request = new Request.Builder() .url("http://www.baidu.com") .build(); Call call = mOkHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(final Response response) throws IOException { //异步请求 更新UI需要切到主线程 } }); } });}
//post请求
private void postAsynHttp() { OkHttpClient mOkHttpClient = new OkHttpClient(); //设置post请求数据 RequestBody formBody = new FormEncodingBuilder() .add("size", "10") .build(); Request request = new Request.Builder() .url("http://blog.csdn.net/soullines/article/details/78040109") .post(formBody) .build(); Call call = mOkHttpClient.newCall(request); call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { } @Override public void onResponse(Response response) throws IOException { }); } });}
当然okhttp的使用需要封装 —->当然okhttp可以设置请求超时和设置缓冲
public class OkHttpEngine { private static OkHttpEngine mInstance; private OkHttpClient mOkHttpClient; private Handler mHandler; //单例模式 public static OkHttpEngine getInstance() { if (mInstance == null) { synchronized (OkHttpEngine.class) { if (mInstance == null) { mInstance = new OkHttpEngine(); } } } return mInstance; } //设置超时 private setTimeout() { mOkHttpClient = new OkHttpClient(); mOkHttpClient.setConnectTimeout(15, TimeUnit.SECONDS); mOkHttpClient.setWriteTimeout(20, TimeUnit.SECONDS); mOkHttpClient.setReadTimeout(20, TimeUnit.SECONDS); mHandler = new Handler(); } //设置缓冲 public void setCache(Context mContext) { File sdcache = mContext.getExternalCacheDir(); int cacheSize = 10 * 1024 * 1024; mOkHttpClient.setCache(new Cache(sdcache.getAbsoluteFile(), cacheSize)); } /** * 异步get请求 * @param url * @param callback */ public void getAsynHttp(String url, ResultCallback callback) { final Request request = new Request.Builder() .url(url) .build(); Call call = mOkHttpClient.newCall(request); dealResult(call, callback); } private void dealResult(Call call, final ResultCallback callback) { call.enqueue(new Callback() { @Override public void onFailure(Request request, IOException e) { sendFailedCallback(request, e, callback); } @Override public void onResponse(final Response response) throws IOException { sendSuccessCallback(response, callback); } private void sendSuccessCallback(final Response objec t, final ResultCallback callback) { mHandler.post(new Runnable() { @Override public void run() { if (callback != null) { callback.onResponse(object); } } }); } private void sendFailedCallback(final Request request, final Exception e, final ResultCallback callback) { mHandler.post(new Runnable() { @Override public void run() { if (callback != null) callback.onError(request, e); } }); } }); }}
//okhttp封装之后的使用
OkHttpEngine.getInstance() .setTimeout()//可以修改封装代码 动态设置请求超时时间 .setCache(this) .getAsynHttp("http://www.baidu.com", new ResultCallback() { @Override public void onError(Request request, Exception e) { } @Override public void onResponse(Response response) { } });
简单的okhttp封装,android中可定制使用
阅读全文
1 0
- okhttp 2.x 用法/封装
- okhttp封装okhttp-utils
- 封装OKHttp
- 封装OkHttp
- okhttp封装
- 封装OKHttp
- 封装OKHttp
- Okhttp封装
- OkHttp 封装
- OkHttp封装
- OKHttp封装
- Okhttp封装
- okHttp封装
- OkHttp封装
- Okhttp封装
- 封装okhttp
- okhttp封装
- 封装okhttp
- tiny4412学习(三)之移植linux-4.x驱动(1)支持网卡驱动
- 在bootstrap的table表格中,设置文本内容居中
- 懒加载
- BZOJ 1497: [NOI2006]最大获利
- 产业物联网如何实现价值?
- okhttp 2.x 用法/封装
- 4.开放封闭原则
- 微信小程序编辑器bug:wx.showToast下image无法识别同名图片文件的更改
- Kotlin-27.区间/范围(Ranges)
- 二叉搜索树转换成一个排序的双向链表
- swoole源码学习——协程的概念,yield协程和原生协程的实现(上)
- Vmware vRealize Autostation 蓝图简介
- 使用jQuery实现Ajax
- 5.依赖倒转原则