import com.taotaospoken.project.json.request.BaseRequest; import com.taotaospoken.project.json.response.BaseResponse; import com.taotaospoken.project.util.NetworkUtil; import android.content.Context; import android.os.AsyncTask; import android.util.Log; /** * @作者 尤立才 * @时间 2013-12-18 * @作用 供客户端调用,获取后台数据或者提交表单 * @开始编写代码啦... */ public class NetworkDataAccessApi { private static Context context; private static NetworkDataAccessApi mNetworkDataAccess; private static JsonFactory mJsonFactory; //json数据处理工厂 private LoadDataTask loadtask; // 访问网络资源 所必要的 参数 private int urlId = 0; // URLID private String accessUrl = null;// 网络资源地址 private BaseRequest requestParam = null; // 地址参数 private NetworkDataAccessListner dataResponseListner = null; // 外部调用接口 private BaseResponse mBaseResponse; /** * * @描述 获得返回数据实例 * @参数 @return * @作者 尤立才 * @时间 2013-12-18 * @返回类型 DataResponse */ public static NetworkDataAccessApi getInstance(Context context1) { if (mNetworkDataAccess == null) { mNetworkDataAccess = new NetworkDataAccessApi(); mJsonFactory = JsonFactory.getNewFactory(context); } context = context1; return mNetworkDataAccess; } /** * * @描述 发送请求 * @参数 @param ID 访问Url对应的ID * @参数 @param accessUrl 访问Url * @参数 @param requestParam URL参数 * @作者 尤立才 * @时间 2013-12-18 * @返回类型 void */ public void sendRequest(int ID, String accessUrl, BaseRequest requestParam,BaseResponse baseResponse) { mBaseResponse=baseResponse; this.urlId = ID; this.accessUrl = accessUrl; this.requestParam = requestParam; loadtask = new LoadDataTask(); loadtask.execute(); } /** * * @描述 取消本次请求 * @参数 * @作者 尤立才 * @时间 2013-12-18 * @返回类型 void */ public void cancellTask() { if (loadtask != null && loadtask.getStatus() == AsyncTask.Status.RUNNING) { loadtask.cancel(true); loadtask = null; if (dataResponseListner != null) { dataResponseListner.ReceiveDataCancelled(); } } } private void receiveDataComplete(Object o) { if (this.dataResponseListner != null) { dataResponseListner.ReceiveDataComplete(o); } } private void receiveDataOverTime() { if (dataResponseListner != null) { dataResponseListner.ReceiveDataOverTime(); } } private void receiveDataError() { if (dataResponseListner != null) { dataResponseListner.ReceiveDataError(); } } // ============================================================================ class LoadDataTask extends AsyncTask<Object, Integer, Object> { @Override protected void onPreExecute() { // TODO Auto-generated method stub if (loadtask.isCancelled()) { Log.e("=============================", "onPreExecute 取消了"); } else { Log.e("=============================", "onPreExecute"); } super.onPreExecute(); } @Override protected Object doInBackground(Object... objects) { Object object = null; try { object = mJsonFactory.getData(accessUrl, requestParam, urlId,mBaseResponse); } catch (Exception e) { object = null; } return object; } @Override protected void onPostExecute(Object result) { if (loadtask.isCancelled()) { Log.e("=============================", "onPostExecute 取消了"); } else { Log.e("=============================", "onPostExecute"); } try { if (NetWork.REQUEST_SUCCESS == mJsonFactory.getResponseCode()) { if (result == null) { receiveDataError(); } else receiveDataComplete(result); } else if (NetworkUtil.NO_NET_CONNECT == mJsonFactory .getResponseCode()) { receiveDataOverTime(); } else { receiveDataOverTime(); } } catch (Exception e) { receiveDataError(); } } @Override protected void onCancelled() { // TODO Auto-generated method stub super.onCancelled(); } } public void setDataResponseListner( NetworkDataAccessListner dataResponseListner) { this.dataResponseListner = dataResponseListner; } // ====================以下是外部调用接口================================== public interface NetworkDataAccessListner { /* * 加载数据完成 */ void ReceiveDataComplete(Object object);// 加载数据完成 void ReceiveDataError();// 加载数据出问题 void ReceiveDataOverTime();// 加载数据超时 void ReceiveDataCancelled();// 加载数据取消 } }写的一般,望大神指点。
原文:http://blog.csdn.net/youlicai/article/details/20280901