最近项目用到了XUtils,然而由于时间紧迫一直没有进行网络请求的封装处理,导致后台返回数据方式更改后简直是灾难!
于是趁着下一个项目准备之前,花点时间做下简单的封装处理,没试过性能如何,希望大家多指点指点,好了废话不多说,开始进入正题!
封装类
** * XUtisl帮助类 * @author Administrator * */ public class XUtilsHelper { private static Context mContext; private static XUtilsHelper mHelper; private static HttpUtils mHttpUtils; private static Dialog mLoadingDialog; /** 初始化 */ public synchronized static void init(){ if(mHelper==null){ mHelper = new XUtilsHelper(); mHttpUtils = new HttpUtils(Constants.REQUEST_TIMEOUT); } } /** 对外提供实例 */ public static XUtilsHelper getInstance(Context context){ mContext = context; if(mLoadingDialog==null){ mLoadingDialog = new ProgressDialog(mContext); } return mHelper; } /** * Post 请求 * @param url 请求地址 * @param params 请求参数 * @param clazz Bean * @param isLoading 是否显示加载 * @param callBack 请求结果回调 */ public void httpPost(String url,RequestParams params,final Class clazz, final boolean isLoading,final MyRequestCallBack callBack){ mHttpUtils.send(HttpMethod.POST, url, params, new RequestCallBack<String>() { @Override public void onStart() { super.onStart(); if(isLoading){ mLoadingDialog.show(); } } @Override public void onFailure(HttpException arg0, String arg1) { if(mLoadingDialog.isShowing()){ //mLoadingDialog.hide(); } callBack.failure(); } @Override public void onSuccess(ResponseInfo<String> response) { if(mLoadingDialog.isShowing()){ mLoadingDialog.hide(); } BaseBean bean = ParserHelper.parser(response.result, clazz); callBack.success(bean); } }); } }
接口回调函数
/** * 网络请求回调 * @author Administrator * */ public interface MyRequestCallBack { /** * 请求成功数据 * @param data */ public void success(BaseBean bean); /** * 请求失败无响应 */ public void failure(); }