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

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


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>() {

			@Override
			protected 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;
			}

			@Override
			protected 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() {

			@Override
			public 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() {

			@Override
			public 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
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ouou2048

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值