Android应用中使用AsyncHttpClient来异步网络数据
来源:互联网 发布:stm32vet6数据手册 编辑:程序博客网 时间:2024/05/22 17:11
首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载
http://download.csdn.net/detail/xujinyang1234/5767419
测试的Activity,用到了RequstClient,LoadCacheResponseLoginouthandler,LoadDatahandler三个重写的类
package com.example.asynchttpclienttest;import android.app.Activity;import android.os.Bundle;import android.view.Menu;import android.widget.TextView;import com.loopj.android.http.RequestParams;public class MainActivity extends Activity {private TextView test;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);init();}private void init() {test = (TextView) findViewById(R.id.test);System.out.println("拉拉");RequestParams param = new RequestParams();param.put("id", 1 + "");RequstClient.get("http://58.192.23.75:8080/xiaoxiao2/ColumnServletAndroid",param, new LoadCacheResponseLoginouthandler(MainActivity.this,new LoadDatahandler() {@Overridepublic void onStart() {super.onStart();test.setText("开始拉去数据");}@Overridepublic void onSuccess(String data) {super.onSuccess(data);test.setText(data);System.out.println("拉倒的数据" + data);}@Overridepublic void onFailure(String error, String message) {super.onFailure(error, message);test.setText("错误的数据" + message);}@Overridepublic void onFinish() {super.onFinish();}}));}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.main, menu);return true;}}RequstClient.java
package com.example.asynchttpclienttest;import com.loopj.android.http.AsyncHttpClient;import com.loopj.android.http.AsyncHttpResponseHandler;import com.loopj.android.http.RequestParams;public class RequstClient {/** * 定义一个异步网络客户端 默认超时未20秒 当超过,默认重连次数为5次 默认最大连接数为10个 */private static AsyncHttpClient mClient = new AsyncHttpClient();static {mClient.setTimeout(20000);}public static void post(String url, AsyncHttpResponseHandler handler) {post(url, null, handler);}/** * post 请求 * * @param url * API 地址 * @param params * 请求的参数 * @param handler * 数据加载句柄对象 */public static void post(String url, RequestParams params,AsyncHttpResponseHandler handler) {System.out.println("进入post");mClient.post(url, params, handler);}public static void get(String url, AsyncHttpResponseHandler handler) {}public static void get(String url, RequestParams params,AsyncHttpResponseHandler handler) {System.out.println("进入get");mClient.get(url, params, handler);}}
package com.example.asynchttpclienttest;import org.apache.http.Header;import android.content.Context;import com.loopj.android.http.AsyncHttpResponseHandler;public class LoadCacheResponseLoginouthandler extends AsyncHttpResponseHandler {private Context context;private LoadDatahandler mHandler;public LoadCacheResponseLoginouthandler(Context context,LoadDatahandler mHandler) {this.context = context;this.mHandler = mHandler;}@Overridepublic void onStart() {super.onStart();mHandler.onStart();}@Overridepublic void onFailure(Throwable error, String content) {super.onFailure(error, content);mHandler.onFailure("", "网络连接超时");}@Overridepublic void onFinish() {super.onFinish();mHandler.onFinish();}@Overridepublic void onSuccess(int statusCode, Header[] headers, String content) {super.onSuccess(statusCode, headers, content);System.out.println("得到的返回码" + statusCode);try {switch (statusCode) {case 200:mHandler.onSuccess(content);System.out.println("返回的内容" + content);break;case 401:onFailure("401", "没有登录");break;case 403:onFailure("404", "没有权限");break;default:break;}} catch (Exception e) {e.printStackTrace();}}/** * 出错 * * @param error * @param errorMessage */public void onFailure(String error, String errorMessage) {if (errorMessage != null) {mHandler.onFailure(error, errorMessage);}}}
接口:
package com.example.asynchttpclienttest;public class LoadDatahandler {/** * 加载数据时调用 */public void onStart() {};/** * 加载数据调用,得到缓存数据 * @param data */public void onLoadCaches(String data) {};/** * 当调用服务器接口成功获取数据时,调用这个方法 * @param data */public void onSuccess(String data) {};/** * 当调用服务器接口获取数据失败时,调用这个方法 * @param error出错原因 * @param message出错原因描述 */public void onFailure(String error, String message) {};/** * 加载完成时调用 */public void onFinish() {};}
扩展:
Android在AsyncHttpClient框架的基础上定制能直接返回对象数组的框架
- Android应用中使用AsyncHttpClient来异步网络数据
- Android应用中使用AsyncHttpClient来异步网络数据
- Android应用中使用AsyncHttpClient来异步网络数据
- Android应用中使用AsyncHttpClient来异步网络数据
- 使用AsyncHttpClient框架来完成网络数据的请求
- Android异步网络请求--AsyncHttpClient
- 异步AsyncHttpClient应用
- Android 使用Gson与AsyncHttpClient封装网络
- Android网络请求---AsyncHttpClient的使用
- Android网络编程 HttpURLConnection,HttpClient,Asynchttpclient使用
- Android 异步加载数据 AsyncTask+Handler+AsyncHttpClient+Universal_Image_loader+Volley
- Android-AsyncHttpClient网络框架
- Android中异步任务请求网络数据
- 异步的AsyncHttpClient使用详解
- AsyncHttpClient请求网络数据小节!
- Android网络编程中关于AsyncHttpClient获取cookie的问题
- android学习——使用开源程序AsyncHttpClient访问网络
- 13 Android AsyncHttpClient 使用
- 降低视频监控存储系统的成本同时提高可靠性
- iOS 5 ARC 入门
- 关于软件开发人员如何提高自己的软件专业技术方面的具体建议
- Eclipse、NetBeans、IntelliJ
- #R_function#常用Function汇总
- Android应用中使用AsyncHttpClient来异步网络数据
- 如何让UE不自动生成.bak文件,以及取消文件可能不是DOS格式的提示
- 第三方支付系统如何测试?案例分析
- 《算法竞赛-训练指南》第一章-1.5_UVa 10881
- 可以直接拿来用的15个jQuery代码片段
- DateTime有默认构造函数吗?-class与struct的区别
- HP Probook 4411S 在UBUNTU下内置音响不发声的解决办法
- EAX、ECX、EDX、EBX寄存器的作用
- CODASPY 2012_Detecting Repackaged Smartphone Applications in Third-Party Android Marketplaces