摘要: 首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Activity,用到了RequstClient,LoadCacheResponseLogin...

首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载

http://download.csdn.net/detail/xujinyang1234/5767419

测试的Activity,用到了RequstClient,LoadCacheResponseLoginouthandler,LoadDatahandler三个重写的类

  1. package com.example.asynchttpclienttest;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Menu;
  5. import android.widget.TextView;
  6. import com.loopj.android.http.RequestParams;
  7. public class MainActivity extends Activity {
  8. private TextView test;
  9. @Override
  10. protected void onCreate(Bundle savedInstanceState) {
  11. super.onCreate(savedInstanceState);
  12. setContentView(R.layout.activity_main);
  13. init();
  14. }
  15. private void init() {
  16. test = (TextView) findViewById(R.id.test);
  17. System.out.println("拉拉");
  18. RequestParams param = new RequestParams();
  19. param.put("id", 1 + "");
  20. RequstClient.get(
  21. "http://58.192.23.75:8080/xiaoxiao2/ColumnServletAndroid",
  22. param, new LoadCacheResponseLoginouthandler(MainActivity.this,
  23. new LoadDatahandler() {
  24. @Override
  25. public void onStart() {
  26. super.onStart();
  27. test.setText("开始拉去数据");
  28. }
  29. @Override
  30. public void onSuccess(String data) {
  31. super.onSuccess(data);
  32. test.setText(data);
  33. System.out.println("拉倒的数据" + data);
  34. }
  35. @Override
  36. public void onFailure(String error, String message) {
  37. super.onFailure(error, message);
  38. test.setText("错误的数据" + message);
  39. }
  40. @Override
  41. public void onFinish() {
  42. super.onFinish();
  43. }
  44. }));
  45. }
  46. @Override
  47. public boolean onCreateOptionsMenu(Menu menu) {
  48. getMenuInflater().inflate(R.menu.main, menu);
  49. return true;
  50. }
  51. }

RequstClient.java

  1. package com.example.asynchttpclienttest;
  2. import com.loopj.android.http.AsyncHttpClient;
  3. import com.loopj.android.http.AsyncHttpResponseHandler;
  4. import com.loopj.android.http.RequestParams;
  5. public class RequstClient {
  6. /**
  7. * 定义一个异步网络客户端 默认超时未20秒 当超过,默认重连次数为5次 默认最大连接数为10个
  8. */
  9. private static AsyncHttpClient mClient = new AsyncHttpClient();
  10. static {
  11. mClient.setTimeout(20000);
  12. }
  13. public static void post(String url, AsyncHttpResponseHandler handler) {
  14. post(url, null, handler);
  15. }
  16. /**
  17. * post 请求
  18. *
  19. * @param url
  20. *            API 地址
  21. * @param params
  22. *            请求的参数
  23. * @param handler
  24. *            数据加载句柄对象
  25. */
  26. public static void post(String url, RequestParams params,
  27. AsyncHttpResponseHandler handler) {
  28. System.out.println("进入post");
  29. mClient.post(url, params, handler);
  30. }
  31. public static void get(String url, AsyncHttpResponseHandler handler) {
  32. }
  33. public static void get(String url, RequestParams params,
  34. AsyncHttpResponseHandler handler) {
  35. System.out.println("进入get");
  36. mClient.get(url, params, handler);
  37. }
  38. }
  1. package com.example.asynchttpclienttest;
  2. import org.apache.http.Header;
  3. import android.content.Context;
  4. import com.loopj.android.http.AsyncHttpResponseHandler;
  5. public class LoadCacheResponseLoginouthandler extends AsyncHttpResponseHandler {
  6. private Context context;
  7. private LoadDatahandler mHandler;
  8. public LoadCacheResponseLoginouthandler(Context context,
  9. LoadDatahandler mHandler) {
  10. this.context = context;
  11. this.mHandler = mHandler;
  12. }
  13. @Override
  14. public void onStart() {
  15. super.onStart();
  16. mHandler.onStart();
  17. }
  18. @Override
  19. public void onFailure(Throwable error, String content) {
  20. super.onFailure(error, content);
  21. mHandler.onFailure("", "网络连接超时");
  22. }
  23. @Override
  24. public void onFinish() {
  25. super.onFinish();
  26. mHandler.onFinish();
  27. }
  28. @Override
  29. public void onSuccess(int statusCode, Header[] headers, String content) {
  30. super.onSuccess(statusCode, headers, content);
  31. System.out.println("得到的返回码" + statusCode);
  32. try {
  33. switch (statusCode) {
  34. case 200:
  35. mHandler.onSuccess(content);
  36. System.out.println("返回的内容" + content);
  37. break;
  38. case 401:
  39. onFailure("401", "没有登录");
  40. break;
  41. case 403:
  42. onFailure("404", "没有权限");
  43. break;
  44. default:
  45. break;
  46. }
  47. } catch (Exception e) {
  48. e.printStackTrace();
  49. }
  50. }
  51. /**
  52. * 出错
  53. *
  54. * @param error
  55. * @param errorMessage
  56. */
  57. public void onFailure(String error, String errorMessage) {
  58. if (errorMessage != null) {
  59. mHandler.onFailure(error, errorMessage);
  60. }
  61. }
  62. }

接口:

  1. package com.example.asynchttpclienttest;
  2. public class LoadDatahandler {
  3. /**
  4. * 加载数据时调用
  5. */
  6. public void onStart() {};
  7. /**
  8. * 加载数据调用,得到缓存数据
  9. * @param data
  10. */
  11. public void onLoadCaches(String data) {};
  12. /**
  13. * 当调用服务器接口成功获取数据时,调用这个方法
  14. * @param data
  15. */
  16. public void onSuccess(String data) {};
  17. /**
  18. * 当调用服务器接口获取数据失败时,调用这个方法
  19. * @param error     出错原因
  20. * @param message   出错原因描述
  21. */
  22. public void onFailure(String error, String message) {};
  23. /**
  24. * 加载完成时调用
  25. */
  26. public void onFinish() {};
  27. }

扩展:

Android在AsyncHttpClient框架的基础上定制能直接返回对象数组的框架

【转】Android应用中使用AsyncHttpClient来异步网络数据的更多相关文章

  1. Android应用中使用AsyncHttpClient来异步网络数据(转载)

    摘要: 首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测 ...

  2. Android应用中使用AsyncHttpClient来异步网络数据

    首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Ac ...

  3. IOS9中使用NSURLConection发送异步网络请求

    IOS9中使用NSURLConection发送异步网络请求 在ios9中,NSURLConection的sendSync..和sendAsync已经过时.被NSURLSession代替. 以下蓝色部分 ...

  4. Android利用tcpdump和wireshark抓取网络数据包

    Android利用tcpdump和wireshark抓取网络数据包 主要介绍如何利用tcpdump抓取andorid手机上网络数据请求,利用Wireshark可以清晰的查看到网络请求的各个过程包括三次 ...

  5. Android之MVP模式实现登录和网络数据加载

    MVP简介 相信大家对 MVC 都是比较熟悉了:M-Model-模型.V-View-视图.C-Controller-控制器,MVP作为MVC的演化版本,也是作为用户界面(用户层)的实现模式,那么类似的 ...

  6. 如何从Linux系统中获取带宽、流量网络数据

    引入 国外的云主机厂商,例如AWS提供的网络数据是以流量为单位的,例如下面的图片: 从上图来看,其取值方式为 每隔5分钟取值1次,(每次)每个点显示为1分钟内的流量字节数(Bytes) 带宽与流量 我 ...

  7. ajax中的同步与异步修改数据的问题

    这次项目中因为前端有事儿,项目紧急加个新需求,于是自己硬着头皮上去看了下前端的逻辑后便开始动手了,但是为了简单起见就直接自己写了个ajax调服务来获取数据,然后修改前端定义的全局数据 //ajax来请 ...

  8. 项目中使用的ajax异步读取数据结构设计

    设计稍微复杂了一点,完成ajax读取功能涉及到了很多页面.虽然如此,但感觉比较灵活. 和传统方法唯一的区别在于多了一层数据容器控件,里面提供了显示数据的HTML元素及相应的JS方法. 这样数据控件指生 ...

  9. Android架构:用消息机制获取网络数据

    网络请求,不管是什么协议,是长连接还是短连接,总是一个异步的请求,过程包括:加请求参数->发起请求->接收响应->解析数据->获得业务数据. 最挫的做法是,业务代码包揽所有这些 ...

随机推荐

  1. 错误命令“if not exist "\Dll" mkdir "\Dll" xcopy "\bin\Debug\*.*" "F:\647\VS项目\EtrolMes2014SY\Framework\Dll" /e /i /y”已退出,代码为 9009

    分析错误 第一步:观察错误,发现plugin文件夹中未生成对应的编译文件. 第二步:XCOPY命令无法执行,百度xcopy为何无法执行 第三步,搜索,发现环境变量未配置正确. 就是环境变量path(大 ...

  2. php var_dump()函数的详解

    说明:var_dump()方法,判断一个变量的类型与长度,并输出变量的数值,如果变量有值,则输出是变量的值,并返回数据类型.显示关于一个或多个表达式的结构信息,包括表达式的类型与值.数组将递归展开值, ...

  3. OC中nil、Nil、NULL、NSNull的区别

    nil:指向OC中对象的空指针 e.g.: NSString *string = nil; Nil:指向OC中类的空指针    e.g.:Class class = Nil; NULL:指向其他类型的 ...

  4. ArcGIS Server Q&A

    持续更新.. 一. AGS Server10发布mobile data access 出现错误 问题描述: "ArcGIS Server: Configuration <name> ...

  5. VMware Workstation 虚拟机纯 Linux 终端如何安装 VMware Tools ?

    VMware Workstation 虚拟机纯 Linux 终端如何安装 VMware Tools ? 1.首先在虚拟机设置里面设置一个共享文件夹 2.在虚拟机菜单栏中选择 VMware Tools ...

  6. python面试题(七)

    1 什么是局域网.广域网.城域网? ①局域网LAN(Local Area Network):一般指覆盖范围在10公里以内,一座楼房或一个单位内部的网络.由于传输距离直接影响传输速度,因此,局域网内的通 ...

  7. springMVC文件的上传与下载

    1.文件上传 springmvc中只需要配置上传组件,然后配合使用MultipartFile,就可以轻松实现单个文件上传和批量上传,而且上传的文件类型和大小都可以在springmvc 配置文件中配置. ...

  8. 剑指offer 面试18题

    面试18题: 题目:删除链表中的节点 题一:在O(1)时间内删除链表节点.给定单向链表的头指针和一个节点指针,定义一个函数在O(1)时间内删除该节点. 解题思路:我们要删除节点i,先把i的下一个节点j ...

  9. 曾经跳过的坑------replace、替换斜杠反斜杠、时间格式化处理

    JAVA 中: 坑一: replace没有用对象进行接收.直接使用 dateStr.replaceAll("\\/", "-"); 是不行的,至少得加上 &qu ...

  10. 前端基础之JavaScript_(3)_DOM对象

    JavaScript之DOM对象 HTML  DOM HTML  Document Object Model(文档对象模型) HTML DOM 定义了访问和操作HTML文档的标准方法 HTML DOM ...