安卓笔记-封装的HttpUtils

最近项目用到了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() {

			@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 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();
}


代码如上,当初的思路就是请求参数需要自己调用的时候封装传递进来,至于Get请求以及文件上传基本无变化,故不显示出来

由于第一次学着封装,如果有更好的意见和建议请联系我!!! 

QQ:641571515


你可能感兴趣的:(Android)