最近项目用到了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();
}
由于第一次学着封装,如果有更好的意见和建议请联系我!!!
QQ:641571515