安卓网络请求封装--Android-Async-Http
来源:互联网 发布:茅台葡萄酒 知乎 编辑:程序博客网 时间:2024/06/07 22:08
最近项目需要封装统一的网络请求,因为后台数据的返回不确定性,决定进行最基础的封装,统一返回String,gson解析自行处理。采用Android-Async-Http框架。
碰到的问题有:1、body要求为json而非表单形式,还有json+参数的请求体。2、Android-Async-Http框架未知原因闪退。
代码如下:
public class AsyHttpManger { private static AsyncHttpClient client = new AsyncHttpClient(); /** * 捕捉所有异常,防止闪退 */ public static void get(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) { LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId) + "?" + params.toString()); try { client.get(NetConfig.getUrl(apiId), params, responseHandler); } catch (Exception e) { LogMgr.error(e.getMessage()); } } /** * 捕捉所有异常,防止闪退 */ public static void put(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) { LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId)); try { client.put(NetConfig.getUrl(apiId), params, responseHandler); } catch (Exception e) { LogMgr.error(e.getMessage()); } } /** * 捕捉所有异常,防止闪退 */ public static void post(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) { LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId) + "?" + params.toString()); try { client.post(NetConfig.getUrl(apiId), params, responseHandler); } catch (Exception e) { LogMgr.error(e.getMessage()); } } /** * 适用于需要传参数和json对象的接口 * Post 异步请求 * @param map 参数 */ public static void postJson(Context context, String apiId, Map<String, String> map, String jsonstring, AsyncHttpResponseHandler responseHandler) { try { String url = NetConfig.getUrl(apiId) + "?"; for (String key : map.keySet()) { url = url + "&" + key + "=" + map.get(key); } LogMgr.error("============URL============" + apiId + ":" + url); LogMgr.error("jsonstring:" + jsonstring); //以ByteArrayEntity格式 ByteArrayEntity entity = new ByteArrayEntity(jsonstring.getBytes("UTF-8")); client.post(context, url, entity, "application/json", responseHandler); // client.post(context, url, stringEntity, "application/json;charset=UTF-8", responseHandler); } catch (Exception e) { LogMgr.error(e.getMessage()); } } /** * 捕捉所有异常,防止闪退 */ public static void delete(String apiId, RequestParams params, AsyncHttpResponseHandler responseHandler) { LogMgr.error("============URL============" + apiId + ":" + NetConfig.getUrl(apiId)); try { client.delete(NetConfig.getUrl(apiId), params, responseHandler); } catch (Exception e) { LogMgr.error(e.getMessage()); } } /** * 取消asyhttp的所有请求 */ public static void cancel() { client.cancelAllRequests(true); } public static void setTimeout() { client.setTimeout(60000); }}
调用代码:
RequestParams requestParams = new RequestParams();requestParams.put("name", "abcd");AsyHttpManger.get(NetConfig.A001, requestParams, new TextHttpResponseHandler() { @Override public void onFailure(int i, Header[] headers, String s, Throwable throwable) { LogMgr.info("A001:" + throwable.getMessage().toString()); } @Override public void onSuccess(int i, Header[] headers, String s) { LogMgr.info("A001:" + s); }});
阅读全文
0 0
- 安卓网络请求封装--Android-Async-Http
- 使用android-async-http来封装Android网络请求框架
- 关于android-async-http的使用,封装网络请求
- Android网络请求库 android-async-http
- Android网络请求框架android-async-http
- 安卓网络开发android-async-http的简单实用
- 网络请求一 : android-async-http
- 网络请求库之android-async-http
- Anroid-async-http封装网络请求框架源码分析
- android-async-http 封装
- Android Http网络请求封装
- android-async-http Android网络请求请求库
- android-async-http 异步网络请求客户端请求接口
- Android基于http的网络请求async-http框架
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http
- Android网络请求库——android-async-http
- linux mint 安装类似于xShell的ssh软件PAC Manager
- dom学习
- ZipInputStream和RSA算法的纠葛
- selenium 万能的xpath
- 在Windows x64中加载驱动
- 安卓网络请求封装--Android-Async-Http
- leetcode 347. Top K Frequent Elements
- 深入理解Java中Synchronized(对象锁)和Static Synchronized(类锁)的区别
- mysql常用命令
- 如何关闭浏览器的HSTS功能
- 11月13日云栖精选夜读:阿里云中间件产品科技普惠企业,满足多场景需求
- angular学习
- java学习笔记(11)--网络通信
- 【JavaSE】作业练习1111