【转】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 测 ...
- Android应用中使用AsyncHttpClient来异步网络数据
首先下载AsyncHttpClient的库文件,可以自行搜索,可以到下面地址下载 http://download.csdn.net/detail/xujinyang1234/5767419 测试的Ac ...
- 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) 带宽与流量 我 ...
- ajax中的同步与异步修改数据的问题
这次项目中因为前端有事儿,项目紧急加个新需求,于是自己硬着头皮上去看了下前端的逻辑后便开始动手了,但是为了简单起见就直接自己写了个ajax调服务来获取数据,然后修改前端定义的全局数据 //ajax来请 ...
- 项目中使用的ajax异步读取数据结构设计
设计稍微复杂了一点,完成ajax读取功能涉及到了很多页面.虽然如此,但感觉比较灵活. 和传统方法唯一的区别在于多了一层数据容器控件,里面提供了显示数据的HTML元素及相应的JS方法. 这样数据控件指生 ...
- Android架构:用消息机制获取网络数据
网络请求,不管是什么协议,是长连接还是短连接,总是一个异步的请求,过程包括:加请求参数->发起请求->接收响应->解析数据->获得业务数据. 最挫的做法是,业务代码包揽所有这些 ...
随机推荐
- iOS Document Interaction 编程指南
本文转载至 http://www.2cto.com/kf/201306/219382.html iOS支持在你的app中用其他app预览和显示文档.iOS还支持文件关联,允许其他app通过你的程序打开 ...
- 【BZOJ2320】最多重复子串 调和级数+hash
[BZOJ2320]最多重复子串 Description 一个字符串P的重复数定义为最大的整数R,使得P可以分为R段连续且相同的子串.比方说,“ababab”的重复数为3,“ababa”的重复数为1. ...
- delphi 创建服务,安装与卸载服务
运行Delphi7,选择菜单File-->New-->Other--->Service Application.将生成个服务框架.将工程保存为ServiceDemo.dpr和Unit ...
- Martin Fowler’s Active Record design pattern.
P of EAA: Active Record https://www.martinfowler.com/eaaCatalog/activeRecord.html Active Record An o ...
- Stolz–Cesàro theorem
w http://planetmath.org/sites/default/files/texpdf/33795.pdf Stolz–Cesàro theorem - Wikipedia https ...
- MariaDB数据库主从复制实现步骤
一.MariaDB简介 MariaDB数据库的主从复制方案,是其自带的功能,并且主从复制并不是复制磁盘上的数据库文件,而是通过binlog日志复制到需要同步的从服务器上. MariaDB数据库支持单向 ...
- selenium 下载文件设置下载路径
Chrome 文件下载 Chrome浏览器类似,设置其options: download.default_directory:设置下载路径 profile.default_content_settin ...
- 1、Python request(爬虫-百度翻译)
#encoding=utf-8 import requests def fanyi(): while True: context = input("请输入翻译的内容(退出q):") ...
- [二次开发]dede文章页面怎样显示作者的头像
dede在文章页面显示作者仅仅是显示其username,可是假如我想把dede改造成较为社交化的站点.我认为是有必要显示作者的头像的,可是官方并没有相应的模版标签. 在网上看到解决问题的办法基本上是直 ...
- django中的django admin插件
一.django admin前言 1.admin的作用 为了方便后台开发者快速的部署测试环境,于是就产生了admin,admin主要是操作models中的类从而实现对数据库中的数据增删改查的操作. 2 ...
