【极客学院学习笔记】Android通信基类

来源:互联网 发布:淘宝不能卖烟吗 编辑:程序博客网 时间:2024/04/29 18:20

构造方法的参数:服务器网址,通信协议,通信成功接口,通信失败接口,参数键值对


AsyncTask<Params, Progress, Result>

AsyncTask执行的四个步骤:

onPreExecute():

doInBackground(Params...)

onProgressUpdate(Progress...)

onPostExecute(Result)


package com.hxdb.wkj.net;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.InputStreamReader;import java.io.OutputStreamWriter;import java.net.URL;import java.net.URLConnection;import android.os.AsyncTask;import com.hxdb.wkj.app.Config;/** *  * Description: 网络通信基类 *  * @author ouzhongyuan * @date 2014-10-28 * @version 1.0 *  */public class NetConnection {public NetConnection(final String url, final HttpMethod method,final SuccessCallback successCallback,final FailCallback failCallback, final String... kvs) {new AsyncTask<Void, Void, String>() {@Overrideprotected String doInBackground(Void... arg0) {StringBuffer paramsStr = new StringBuffer();for (int i = 0; i < kvs.length; i += 2) {paramsStr.append(kvs[i]).append("=").append(kvs[i + 1]).append("&");}try {URLConnection uc;switch (method) {case POST:uc = new URL(url).openConnection();uc.setDoOutput(true);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(uc.getOutputStream(),Config.CHARSET));bw.write(paramsStr.toString());bw.flush();break;default:uc = new URL(url + "?" + paramsStr.toString()).openConnection();break;}System.out.println("Resquest url:" + uc.getURL());System.out.println("Resquest data:" + paramsStr);BufferedReader brBufferedReader = new BufferedReader(new InputStreamReader(uc.getInputStream(),Config.CHARSET));String line = null;StringBuffer result = new StringBuffer();while ((line = brBufferedReader.readLine()) != null) {result.append(line);}System.out.println("Result:" + result);return result.toString();} catch (Exception e) {}return null;}@Overrideprotected void onPostExecute(String result) {if (result != null) {if (successCallback != null) {successCallback.onSuccess(result);}} else {if (failCallback != null) {failCallback.onFail();}}super.onPostExecute(result);}}.execute();}public static interface SuccessCallback {void onSuccess(String result);}public static interface FailCallback {void onFail();}}

package com.hxdb.wkj.net.user;import org.json.JSONException;import org.json.JSONObject;import com.hxdb.wkj.app.Config;import com.hxdb.wkj.net.HttpMethod;import com.hxdb.wkj.net.NetConnection;/** * Description: 用户登录网络类 *   * @author zhangxiaopan * @date 2014-11-1 * @version 1.0 *  */public class Login {public Login(String username, String password, final SuccessCallback successCallback,final FailCallback failCallback) {new NetConnection(Config.SERVER_URL, HttpMethod.POST, new NetConnection.SuccessCallback() {@Overridepublic void onSuccess(String result) {try {JSONObject jsonObject = new JSONObject(result);switch (jsonObject.getInt(Config.KEY_STATUS)) {case Config.RESULT_STATUS_SUCCESS:successCallback.onSuccess(jsonObject.getString(Config.KEY_TOKEN),jsonObject.getString(Config.KEY_USERID));break;default:if (failCallback != null) {failCallback.onFail();}break;}} catch (JSONException e) {e.printStackTrace();if (failCallback != null) {failCallback.onFail();}}}}, new NetConnection.FailCallback() {@Overridepublic void onFail() {if (failCallback != null) {failCallback.onFail();}}}, Config.KEY_ACTION, Config.ACTION_LOGIN, Config.KEY_USERNAME, username, Config.KEY_PASSWORD, password);}public static interface SuccessCallback {void onSuccess(String token, String userId);}public static interface FailCallback {void onFail();}}


0 0
原创粉丝点击