Android应用中使用AsyncHttpClient来异步网络数据(转载)
摘要: 首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Activity,用到了RequstClient,LoadCacheResponseLogin...
首先下载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;
- @Override
- protected 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() {
- @Override
- public void onStart() {
- super.onStart();
- test.setText("开始拉去数据");
- }
- @Override
- public void onSuccess(String data) {
- super.onSuccess(data);
- test.setText(data);
- System.out.println("拉倒的数据" + data);
- }
- @Override
- public void onFailure(String error, String message) {
- super.onFailure(error, message);
- test.setText("错误的数据" + message);
- }
- @Override
- public void onFinish() {
- super.onFinish();
- }
- }));
- }
- @Override
- public 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;
- }
- @Override
- public void onStart() {
- super.onStart();
- mHandler.onStart();
- }
- @Override
- public void onFailure(Throwable error, String content) {
- super.onFailure(error, content);
- mHandler.onFailure("", "网络连接超时");
- }
- @Override
- public void onFinish() {
- super.onFinish();
- mHandler.onFinish();
- }
- @Override
- public 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来异步网络数据
首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Ac ...
- 【转】Android应用中使用AsyncHttpClient来异步网络数据
摘要: 首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测 ...
- IOS9中使用NSURLConection发送异步网络请求
IOS9中使用NSURLConection发送异步网络请求 在ios9中,NSURLConection的sendSync..和sendAsync已经过时.被NSURLSession代替. 以下蓝色部分 ...
- Android利用tcpdump和wireshark抓取网络数据包
Android利用tcpdump和wireshark抓取网络数据包 主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次 ...
- Android之MVP模式实现登录和网络数据加载
MVP简介 相信大家对 MVC 都是比较熟悉了:M-Model-模型.V-View-视图.C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的 ...
- 如何从Linux系统中获取带宽、流量网络数据
引入 国外的云主机厂商,例如AWS提供的网络数据是以流量为单位的,例如下面的图片: 从上图来看,其取值方式为 每隔5分钟取值1次,(每次)每个点显示为1分钟内的流量字节数(Bytes) 带宽与流量 我 ...
- Android系统中setprop,getprop,watchprops命令的使用(转载)
转自:http://blog.csdn.net/yao_guet/article/details/6531241 在android系统中,有一些初始化的配置文件,例如: /init.rc /defau ...
- Android架构:用消息机制获取网络数据
网络请求,不管是什么协议,是长连接还是短连接,总是一个异步的请求,过程包括:加请求参数->发起请求->接收响应->解析数据->获得业务数据. 最挫的做法是,业务代码包揽所有这些 ...
- 如何在Android studio中同时打开多个工程? (转载)
最近学习Android Studio,想同时打开两个Project.但是点击File->Open之后,原有的Project被关闭掉了.怎么在新的窗口中打开Project呢? 解决: 点击Help ...
随机推荐
- Python 学习---------Day2
第四章 介绍Python对象类型为什么使用内置类型 内置对象使程序更容易编写 内置对象是拓展的组件 内置对象往往比定制的数据结构更有效率 内置对象是语言标准的一部分Python的核心数据类型 数字 字 ...
- NIO概述
NIO API从Java1.4开始引用起就被广泛应用所使用.NIO API自带了IO非阻塞操作. java.nio.*包的结构: · Buffers 作为数据容器 · Chartsets 将容器中的数 ...
- CentOS添加用户及赋予sudo权限
在CentOS下添加一个用户假设用户名:username 密码:userpwd 新建用户: adduser username 修改密码: passwd username 根据提示重复输入两遍userp ...
- 【转】Python中的赋值、浅拷贝、深拷贝介绍
这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下 和很多语言一样,Python中 ...
- Mini projects #6 ---- Blackjack
课程全名:An Introduction to Interactive Programming in Python,来自 Rice University 授课教授:Joe Warren, Scott ...
- window.showModalDialog返回值和window.open返回值实例详解
最近在谷歌浏览器下发现一个问题,就是使用谷歌浏览器已经不兼容window.showModalDialog了,所以还是改成使用window.open(). 一.window.showModalDialo ...
- 基于VC的声音文件操作(四)
(五)读取wav的实例 跟据WAVE文件的格式,实现了读取双声道立体声数据的例子如下: BYTE * GetData(Cstring *pString) //获取声音文件数据的函数,pString参数 ...
- 正则表达式统计java代码空白行,有效代码
import java.io.BufferedReader; import java.io.File; import java.io.FileNotFoundException; import jav ...
- sum() 函数
sum()的参数是一个list 例如: sum([1,2,3])
- Linux内核--网络栈实现分析(六)--应用层获取数据包(上)
本文分析基于内核Linux 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7541907 更多请看专栏,地址http: ...
