async-http 的封装
来源:互联网 发布:绝食知乎 编辑:程序博客网 时间:2024/06/06 08:52
真心希望每一位程序员不要人云亦云,把代码测试过之后再分享出来。
近期想写个应用,经网友分享,好像asynchttp不错,为了省事我也拿来一用。我用的是1.4.9版本,开始感觉还是不错的。
compile 'com.loopj.android:android-async-http:1.4.9'
由于应用与服务器交互太多,导致代码量过多,官方给出的封装不能满足我的需要,所以我自己封装了一个。代码如下:
/** * Created by hhc on 2017/2/4. * 由于有对话框,需要传入Activity. * hhcloading为我自己封装的一个系统等待类,代码另行贴出 */public abstract class HhcAsynRequest { private static final String BASE_URL = "http://API地址"; private static AsyncHttpClient client = new AsyncHttpClient(); private Hhcloading hhcloading; private Activity activity; private static String getAbsoluteUrl(String relativeUrl) { return BASE_URL + relativeUrl; } public HhcAsynRequest(Activity activity,String type, String subUrl, RequestParams params) { this.activity = activity; request(type, subUrl, params); } public void request(String type, String subUrl, RequestParams params){ hhcloading = Hhcloading.showDialog(activity); hhcloading.show(); if (type.equals("get")){ client.get(getAbsoluteUrl(subUrl), params, new AsyncHttpResponseHandler(){ @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { try { String json = new String(responseBody); JSONObject response = new JSONObject(json); analyzeJson(statusCode, headers,response); }catch (Exception e){ Toast.makeText(ContextHolder.getContext(),"数据错误(901):数据格式无效。",Toast.LENGTH_LONG).show(); } /*隐藏等待对话框*/ if (hhcloading != null) { hhcloading.dismiss(); } } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { /*隐藏等待对话框*/ if (hhcloading != null) { hhcloading.dismiss(); } Toast.makeText(ContextHolder.getContext(),"网络错误(900):无法连接到服务器。",Toast.LENGTH_LONG).show(); } }); }else { client.post(getAbsoluteUrl(subUrl), params, new AsyncHttpResponseHandler(){ @Override public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) { try { String json = new String(responseBody); JSONObject response = new JSONObject(json); analyzeJson(statusCode, headers,response); }catch (Exception e){ Toast.makeText(ContextHolder.getContext(),"数据错误(901):数据格式无效。",Toast.LENGTH_LONG).show(); } /*隐藏等待对话框*/ if (hhcloading != null) { hhcloading.dismiss(); } } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { /*隐藏等待对话框*/ if (hhcloading != null) { hhcloading.dismiss(); } Toast.makeText(ContextHolder.getContext(),"网络错误(900):无法连接到服务器。",Toast.LENGTH_LONG).show(); } }); } } /*对外接口*/ public abstract void analyzeJson(int statusCode, Header[] headers, JSONObject response);}
这样,在与服务器交互的时候,只要把API交互地址及提交数据写入就可以了,加载等待,错误处理等千篇一律的事情统一处理一下就可以了。
坑:在使用官方封装的时候,直接使用了返回JSON数据的方式,结果入坑。
“坑”占位》》
0 0
- async-http 的封装
- android-async-http 封装
- Android-async-http回调逻辑的二次封装
- 关于android-async-http的使用,封装网络请求
- async-http-android框架的介绍和二次封装
- Android android-async-http简单再封装
- android-async-http二次封装和调用
- android-async-http简单封装--笔记
- Android-Async-Http的笔记
- 使用android-async-http来封装Android网络请求框架
- Anroid-async-http封装网络请求框架源码分析
- 安卓网络请求封装--Android-Async-Http
- android-async-http我的使用
- android-async-http异步出现的问题
- android-async-http网络框架的使用
- Android开源库async-http的基本使用
- Android-async-http的使用详解
- Android基于http的网络请求async-http框架
- C语言蛇形矩阵例题
- 1034. Head of a Gang (30)
- [ACM] POJ 1753 Flip Game (枚举,BFS,位运算)
- 深度学习之Windows下安装caffe及配置Python和matlab接口
- Android Fragment 示例
- async-http 的封装
- Nginx反向代理、CORS、JSONP等跨域请求解决方法总结
- Vim浏览linux kernel代码的环境搭建
- 给大家一个我的QQ群
- Framework VS Library
- JSON
- HDU1059 Dividing (多重背包)
- 确定windows系统是32bit还是64bit
- java设计模式之单例模式