package net.yasite.api; import java.util.List; import net.yasite.api.params.BaseHttpParam; import net.yasite.net.HttpConstant; import net.yasite.net.httpclient.AHttpClient; import net.yasite.net.httpclient.HttpGetClient; import net.yasite.net.httpclient.HttpPostClent; import net.yasite.net.httpclient.HttpUploadClient; import net.yasite.test.BaseApplication; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.content.Context; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.util.Log; public abstract class BaseAPI implements HttpAPI { public Context context; private int status; private String paramStr; private List <NameValuePair> valuePair;//post请求数据 private List <NameValuePair> fileList;//文件上传数据 private int statuesCode; private SharedPreferences prefs; JSONObject json = new JSONObject(); HttpResponse res; AHttpClient httpClient; public HttpResponse getRes() { return res; } public void setRes(HttpResponse res) { this.res = res; } public int getStatuesCode() { return statuesCode; } public void setStatuesCode(int statuesCode) { this.statuesCode = statuesCode; } public List<NameValuePair> getFileList() { return fileList; } public void setFileList(List<NameValuePair> fileList) { this.fileList = fileList; } private BaseAPI() { } protected BaseAPI(Context context) { this.context = context; } /** * api名称 */ private String method; /** * 请求参数 */ private BaseHttpParam requestParam; /** * 返回数据 */ private Object response; /** * 处理结果 */ private Object handleResult; public BaseAPI(Context context,BaseHttpParam pm) { this.context = context; this.requestParam = pm; } public BaseAPI(Context context,List <NameValuePair> pm) { this.context = context; this.valuePair = pm; } public BaseAPI(Context context,List <NameValuePair> pm, List <NameValuePair> fileList) { this.context = context; this.valuePair = pm; this.fileList = fileList; } public BaseAPI(Context context,List <NameValuePair> pm,BaseHttpParam params) { this.context = context; this.valuePair = pm; this.requestParam = params; } public boolean doUpload() throws Exception { httpClient = new HttpUploadClient(this); return doRequest(); } public boolean doPost() throws Exception { httpClient = new HttpPostClent(this); return doRequest(); } public boolean doGet() throws Exception { httpClient = new HttpGetClient(this); return doRequest(); } private boolean doRequest() throws Exception{ if (method == null) { Log.e(HttpConstant.DUG_TYPE_ERROR, "未设置请求方法"); return false; } // 请求参数验证 if(BaseApplication.DEBUG){ System.out.println("请求参数:" + getMethod()); } httpClient.doRequest(this); if(response != null){ if(response.toString().startsWith("[")){ json.put("list", new JSONArray(response.toString())); }else if(response.toString().startsWith("<html>")){ json.put("content", response.toString()); }else if(response.toString().startsWith("<?xml")){ json.put("content", response.toString()); }else{ json = new JSONObject(response.toString()); } if(BaseApplication.DEBUG){ System.out.println("返回结果:" + json.toString()); } setHandleResult(handlerResult(json)); return true; } return false; } @Override public int handlerError(JSONObject json) throws JSONException,Exception { throw new Exception("操作失败!"); } public Context getContext() { return context; } public void setContext(Context context) { this.context = context; } /** * api地址 * * @param method */ public String getMethod() { return method; } /** * api地址 * * @param method */ public void setMethod(String method) { this.method = method; } /** * 返回状态 * @return */ public int getStatus() { return status; } /** * 设置请求参数 * * @param requestParam */ public void setRequestParam(BaseHttpParam requestParam) { this.requestParam = requestParam; } /** * 服务端返回josn数据 * * @param response */ public void setResponse(Object response) { this.response = response; } /** * 处理服务端返回的结果. 返回数据类型,见BaseAPI子类中HandlerResult方法, 如果非正常返回则反回错误状态码 */ public Object getHandleResult() { return handleResult; } public void setHandleResult(Object object) { this.handleResult = object; } public List<NameValuePair> getValuePair() { return valuePair; } public void setValuePair(List<NameValuePair> valuePair) { this.valuePair = valuePair; } public BaseHttpParam getRequestParam() { return requestParam; } public String getRequestParamToString(){ return this.paramStr; } public void saveToken(String nameValuePairs){ prefs = PreferenceManager.getDefaultSharedPreferences(context); prefs.edit().putString(BaseApplication.TOKEN, nameValuePairs).commit(); } public String getToken(){ prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs.getString(BaseApplication.TOKEN, ""); } public SharedPreferences getPrefs() { return prefs; } public void setPrefs(SharedPreferences prefs) { this.prefs = prefs; } }