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();// 加载数据取消
}
}
写的一般,望大神指点。
封装 获取后台数据类
最新推荐文章于 2020-10-26 18:24:51 发布