`
chriszeng87
  • 浏览: 732961 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

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

阅读更多

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

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

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

 

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

RequstClient.java

 

 

  1. package com.example.asynchttpclienttest;  
  2.   
  3. import com.loopj.android.http.AsyncHttpClient;  
  4. import com.loopj.android.http.AsyncHttpResponseHandler;  
  5. import com.loopj.android.http.RequestParams;  
  6.   
  7. public class RequstClient {  
  8.     /** 
  9.      * 定义一个异步网络客户端 默认超时未20秒 当超过,默认重连次数为5次 默认最大连接数为10个 
  10.      */  
  11.     private static AsyncHttpClient mClient = new AsyncHttpClient();  
  12.     static {  
  13.         mClient.setTimeout(20000);  
  14.     }  
  15.     public static void post(String url, AsyncHttpResponseHandler handler) {  
  16.         post(url, null, handler);  
  17.     }  
  18.     /** 
  19.      * post 请求 
  20.      *  
  21.      * @param url 
  22.      *            API 地址 
  23.      * @param params 
  24.      *            请求的参数 
  25.      * @param handler 
  26.      *            数据加载句柄对象 
  27.      */  
  28.     public static void post(String url, RequestParams params,  
  29.             AsyncHttpResponseHandler handler) {  
  30.         System.out.println("进入post");  
  31.         mClient.post(url, params, handler);  
  32.     }  
  33.     public static void get(String url, AsyncHttpResponseHandler handler) {  
  34.   
  35.     }  
  36.     public static void get(String url, RequestParams params,  
  37.             AsyncHttpResponseHandler handler) {  
  38.         System.out.println("进入get");  
  39.         mClient.get(url, params, handler);  
  40.     }  
  41. }  

 

 

  1. package com.example.asynchttpclienttest;  
  2.   
  3. import org.apache.http.Header;  
  4.   
  5. import android.content.Context;  
  6.   
  7. import com.loopj.android.http.AsyncHttpResponseHandler;  
  8.   
  9. public class LoadCacheResponseLoginouthandler extends AsyncHttpResponseHandler {  
  10.     private Context context;  
  11.     private LoadDatahandler mHandler;  
  12.   
  13.     public LoadCacheResponseLoginouthandler(Context context,  
  14.             LoadDatahandler mHandler) {  
  15.         this.context = context;  
  16.         this.mHandler = mHandler;  
  17.     }  
  18.     @Override  
  19.     public void onStart() {  
  20.         super.onStart();  
  21.         mHandler.onStart();  
  22.     }  
  23.     @Override  
  24.     public void onFailure(Throwable error, String content) {  
  25.         super.onFailure(error, content);  
  26.         mHandler.onFailure("""网络连接超时");  
  27.     }  
  28.     @Override  
  29.     public void onFinish() {  
  30.         super.onFinish();  
  31.         mHandler.onFinish();  
  32.     }  
  33.   
  34.     @Override  
  35.     public void onSuccess(int statusCode, Header[] headers, String content) {  
  36.         super.onSuccess(statusCode, headers, content);  
  37.         System.out.println("得到的返回码" + statusCode);  
  38.         try {  
  39.             switch (statusCode) {  
  40.             case 200:  
  41.                 mHandler.onSuccess(content);  
  42.                 System.out.println("返回的内容" + content);  
  43.                 break;  
  44.             case 401:  
  45.                 onFailure("401""没有登录");  
  46.   
  47.                 break;  
  48.             case 403:  
  49.                 onFailure("404""没有权限");  
  50.                 break;  
  51.             default:  
  52.                 break;  
  53.             }  
  54.   
  55.         } catch (Exception e) {  
  56.             e.printStackTrace();  
  57.         }  
  58.     }  
  59.   
  60.     /** 
  61.      * 出错 
  62.      *  
  63.      * @param error 
  64.      * @param errorMessage 
  65.      */  
  66.     public void onFailure(String error, String errorMessage) {  
  67.         if (errorMessage != null) {  
  68.             mHandler.onFailure(error, errorMessage);  
  69.         }  
  70.     }  
  71. }  



 

 

接口:

 

 

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

 

扩展:

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

 

转自:http://blog.csdn.net/mobilexu/article/details/9350467

分享到:
评论

相关推荐

    Android AsyncHttpClient 异步框架包(网络传输)

    在Android应用中,网络访问通常涉及到服务器交互,如登录注册、数据同步、API调用等。利用AsyncHttpClient,开发者可以快速构建网络功能,同时保证应用的流畅性和稳定性。配合其他库,如Gson或Jackson,可以方便地...

    Android使用AsyncHttpClient读写Cookie

    本篇文章将详细探讨如何在Android中使用AsyncHttpClient进行Cookie的读写操作。 首先,我们要了解Cookie的基本概念。Cookie是由服务器发送到客户端(浏览器或Android应用)的小型文本文件,用于存储会话数据,如...

    AsyncHttpClient从服务器读取数据并显示详情

    1. **异步操作**:AsyncHttpClient的核心特性就是异步请求处理,它允许你在主线程中启动网络请求,然后在回调方法中处理结果,这样不会导致UI冻结,提高了应用的响应性。 2. **简单API**:AsyncHttpClient提供了...

    android HttpURLConnection,AsyncHttpClient网络请求实例

    综上所述,Android应用开发中的网络请求是一个关键领域,掌握HttpURLConnection和AsyncHttpClient的使用对于编写高效、稳定的网络功能至关重要。在实践中,应根据项目需求和团队偏好灵活选择合适的网络请求库,并...

    android 异步访问网络

    在Android应用中,需要注意网络请求的生命周期管理,避免在Activity或Fragment销毁后还继续执行请求。可以使用`WeakReference`或者`LiveData`结合`ViewModel`来确保网络请求与UI组件的生命周期同步。 总之,...

    AsyncHttpClient

    总的来说,AsyncHttpClient 提供了一种高效、便捷的异步网络请求解决方案,它极大地简化了Android应用与服务器之间的通信,提高了应用的性能和用户体验。在实际项目中,结合其他库如Gson或Jackson进行JSON数据解析,...

    Http异步网络访问框架

    在Android开发中,进行网络数据访问是常见的任务,特别是在处理大数据量时,为了不阻塞主线程,提高用户体验,通常会采用异步网络访问技术。本文将深入探讨"Http异步网络访问框架",主要围绕Android环境下的...

    Android异步网络请求框架,超简单实用

    在Android开发中,异步网络请求是不可或缺的一部分,它使得应用程序能够与服务器进行交互,获取或发送数据,而不会阻塞用户界面。本教程将深入探讨一个基于`android_asynchttp_client`的简单实用的异步网络请求框架...

    android 异步操作框架

    在Android开发中,异步操作是必不可少的一...正确理解和使用该框架,可以显著提升Android应用的网络性能和用户体验。在实际开发中,结合其他优秀库如Retrofit、Volley等,可以根据项目需求选择最适合的异步操作框架。

    Android-ListAdapter获取网络数据

    总结一下,本教程介绍了如何在Android应用中使用ListAdapter结合Gson解析JSON数据,以及通过AsyncHttpClient进行异步网络请求。首先,我们利用AsyncHttpClient发送GET请求获取JSON数据,然后用Gson将JSON转换为Java...

    异步加载图片 异步访问网络 代码

    在移动应用开发中,尤其是Android或iOS平台,异步加载图片和异步访问网络是两个非常重要的技术。这两个概念能够显著提升用户体验,防止程序因为长时间阻塞主线程而导致的无响应,甚至内存溢出问题。下面我们将分别...

    实验9 Android网络编程1

    实验9主要涵盖了Android平台上的网络编程,涉及到的关键技术点包括网络请求、JSON解析以及图片加载。...通过完成这个实验,你将掌握如何在Android应用中实现从网络获取数据并显示在用户界面上的核心技能。

    网络访问异步框架

    在Android应用开发中,网络访问是必不可少的一部分,尤其是在如今数据驱动的应用中。为了优化用户体验,开发者需要找到一种高效且简洁的方式来处理网络请求。这就是“网络访问异步框架”所要解决的问题。Android异步...

    安卓图片加载缓存相关-引用开源框架通过AsyncHttpClient实现网络图片查看器.rar

    在Android应用开发中,图片加载和缓存是一个关键的环节,尤其对于那些需要频繁展示网络图片的应用来说。这个压缩包“安卓图片加载缓存相关-引用开源框架通过AsyncHttpClient实现网络图片查看器.rar”显然是一个关于...

    android-async-http 安卓异步http框架

    在Android应用开发中,网络请求是不可或缺的一部分。为了提升用户体验,异步处理网络请求变得至关重要,而`Android-Async-Http`框架正是为此目的设计的一个强大工具。它由Leonardo Uribe创建,并在GitHub上开源,为...

    Android Async异步通信框架

    AsyncHttpClient是由Loopj公司开发的,广泛应用于Android应用的网络通信中。其优点在于它的异步处理能力,可以避免网络请求导致的ANR(Application Not Responding)问题,同时支持多种HTTP方法,如GET、POST、PUT、...

    Android Http异步访问库

    在Android应用开发中,网络访问是必不可少的一部分,尤其是在与服务器进行数据交互时。"Android Http异步访问库"就是为了解决这个问题而设计的,它简化了在Android平台上进行网络请求的复杂性,使得开发者可以更高效...

    AsyncHttpClient封装

    AsyncHttpClient是Android应用开发中常用的一个异步HTTP客户端库,它简化了网络请求的处理,提供了高效的异步操作,使得开发者可以轻松地进行网络数据的获取。本篇将深入探讨AsyncHttpClient的封装、使用方法以及...

Global site tag (gtag.js) - Google Analytics