【极客学院学习笔记】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
- 【极客学院学习笔记】Android通信基类
- 小黑小波比.极客学院.java学习笔记
- 小黑小波比.极客学院.HTML5学习笔记
- 极客学院_android的touch事件学习笔记
- Apache简介——极客学院学习笔记
- node.js学习笔记(6)_极客学院_Waterline
- 小黑小波比.极客学院.android自学笔记
- android闹钟-极客学院
- Android网络通信--学习笔记
- 【极客学院】-python学习笔记-2-Python特色,学习路线
- 极客学院Jsp教程笔记(3)
- [极客学院]git教程笔记1
- 麦子学院C++学习笔记
- 极客学院-通过"Android学习之Launcher源码学习"看UML序列图
- 设计模式之策略模式——极客学院学习笔记
- 了解 web 及网络基础——极客学院学习笔记
- 【极客学院】-iOS学习笔记-2-Xcode(安装,创建项目,工作空间)
- 极客学院学习:第六周javascript基础查漏补缺笔记
- jvm原理
- 低版本IE浏览器补白和边界属性的设置问题
- Android--Activity中启动另一应用程序的方法,无需得到类名
- ubuntu下DHCP的配置
- Oracle基本函数的应用
- 【极客学院学习笔记】Android通信基类
- 第一篇
- ibatis中使用sqlMap元素把配置写到多个文件中的时候一个注意点,运行无错误,junit报错.
- JS 能表示的最大数值
- jQuery中Ajax+Spring MVC实现跨域请求
- 哪里可以买到真的听话药水★扣扣:6768387★
- Crypto++库在VS 2005中的使用——RSA加解密
- Spring MVC中对Annotation配置方式的处理流程
- 利用VS2013编译C语言程序