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 ...
随机推荐
- PostgreSQL和MYsql的对比
一.postgresql多进程,mysql多线程 二.postgresql和它配套的开源软件非常多,容易进行负载均衡 三.posgresql代码简介,mysql比较混乱 四.最重要的,postgres ...
- js多种切换图片
分享通过js实现多种图片切换特效,这里只有手动切换哦,自动效果需自写,效果地址:http://dwz.cn/1drD5u. 下载地址:http://***/download/index/52209 适 ...
- [Java基础]java中this和super
一.this关键字 1.this概念 (参考:http://www.cnblogs.com/xdp-gacl/p/3636071.html) this是一个引用,它指向自身的这个对象,它的内存分析 ...
- (转)JQuery上传插件Uploadify使用详解
原文地址:http://www.cnblogs.com/oec2003/archive/2010/01/06/1640027.html Uploadify是JQuery的一个上传插件,实现的效果非常不 ...
- IOS 获取当前对象所在的VC
id next = [self nextResponder] ; while (next != nil) { next = [next nextResponder]; if ([next isKind ...
- apache httpclient cache 实现可缓存的http客户端
这里的cache storage 采用ehcache,而不是默认的内存式的cache storage.采用ehcache可以将内容缓存到磁盘上. maven <dependency> &l ...
- Java IO8:IO简单总结
字节流.字符流继承关系 前几篇文章讲解了字节流.字符流的使用,不过Java提供给用户的流类远不止此,限于篇幅原因,没办法一一讲解,而且也没有必要一一讲解,就像我在写博客的时候多次提到的,有问题的时候学 ...
- Java IO4:字符编码
前言 字符编码,这本不属于IO的内容,但字节流之后写的应该是字符流,既然是字符流,那就涉及一个"字符编码的"问题,考虑到字符编码不仅仅是在IO这块,Java中很多场景都涉及到这个概 ...
- prerender-SPA程序的SEO优化策略
随着web2.0的兴起,ajax的时代已经成为了事实,更如今Knockout,backbone, angular,ember前端MDV(model driver view)框架强势而来,Single ...
- Unity3d热更新全书-加载(二)如何在不用AssetBundle的前提下动态加载预设
Unity3D的主要构成大家都知道,首先是场景图,场景图上的节点构成一颗树. 每个节点对应一个GameObject对象 然后每个GameObject有若干个组件 有一些组件会与资源产生关系,比如Mes ...