对okhttp的简单封装
来源:互联网 发布:js window对象的方法 编辑:程序博客网 时间:2024/06/05 12:41
之前学习安卓的时候一直使用xutils进行网络请求和图片加载,很是强大,后来换了okhttp,但是它的封装性略低,请求个网络代码一大堆,所以就进行简单的封装,新手可以学习一下回调的使用
代码
public class MyHttpUtil { private static OkHttpClient mOkHttpClient; public static void doGet(String url, final MyHttpResult httpResult){ if(mOkHttpClient==null){ mOkHttpClient=new OkHttpClient(); } Request.Builder requestBuilder = new Request.Builder().url(url);//在此处添加url //可以省略,默认是GET请求 requestBuilder.method("GET",null); Request request = requestBuilder.build(); Call mcall= mOkHttpClient.newCall(request); mcall.enqueue(new Callback() { @Override public void onFailure(Call call, final IOException e) { ThreadUtils.runOnMainThread(new Runnable() { @Override public void run() { if(httpResult!=null){ httpResult.onFailure(e); } } }); } @Override public void onResponse(Call call, final Response response) throws IOException { final String result = response.body().string(); ThreadUtils.runOnMainThread(new Runnable() { @Override public void run() { if(httpResult!=null){ httpResult.onResponse(result); } } }); } }); } public interface MyHttpResult{ public void onFailure(IOException e); public void onResponse(String response); }}
总结
只封装了异步get请求,其他方式的请求也类似吧,其中okhttp原本的callback是在子线程中进行的,所以就无法在其中更新界面了,在这里我在主线程中采用回调,这样就可以直接在callback中更新界面了^_^
其中运行在子线程中的方法用到了另一个自定义工具类,代码如下
public class ThreadUtils { //使用主线程的looper创建handler 这个handler一定执行在主线程的 private static Handler handler = new Handler(Looper.getMainLooper()); private static Executor executor = Executors.newSingleThreadExecutor(); /** * 在子线程中执行代码 * @param r */ public static void runOnNonUIThread(final Runnable r){ new Thread(){ @Override public void run() { r.run(); } }.start(); } /** * 在主线程中执行代码 * @param r */ public static void runOnMainThread(Runnable r){ handler.post(r); }}
注释写的很清楚了,
使用例子
MyHttpUtil.doGet("http://www.baidu.com", new MyHttpUtil.MyHttpResult() { @Override public void onFailure(IOException e) { } @Override public void onResponse(String response) { System.out.println("result"+response); // Log.i("result",response.body().string().toString()); } });
转载注明出处哦
阅读全文
0 0
- 对okhttp的简单封装
- okhttp的简单封装
- OkHttp的简单封装
- okhttp的简单封装
- 简单的封装okhttp
- OKHTTP的简单封装
- okhttp的简单封装
- 简单的okhttp封装
- 简单的封装Okhttp
- 简单的封装okhttp
- 对Okhttp的封装Okhttp-utils
- 对okhttp的二次封装
- Retrofit对OKhttp的封装
- okhttp简单的二次封装
- OKHttp的简单封装类
- 基于okhttp的简单封装
- okHttp的简单封装使用
- Okhttp 简单的网络封装
- 适用于初学者的生成对抗网络教程
- 2017年11月9日作业
- 获取安卓系统时间
- nginx与php7.0的结合
- 【转】Python实现单向链表(图解)
- 对okhttp的简单封装
- 刘明春总结《2017年11月9号》【连续第12天总结】
- PE 文件型病毒编写实验(一)
- 均值、方差、协方差、协方差矩阵、特征值、特征向量
- openSMILE批量提取语音文件 脚本
- java获取网页html内容。。。。。。。
- Maven3.5.0安装与配置+Eclipse应用
- 洛谷P2925 [USACO08DEC]干草出售Hay For Sale
- Altium Designer 技巧备忘