首先下载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框架的基础上定制能直接返回对象数组的框架
转自:http://blog.csdn.net/mobilexu/article/details/9350467
相关推荐
在Android应用中,网络访问通常涉及到服务器交互,如登录注册、数据同步、API调用等。利用AsyncHttpClient,开发者可以快速构建网络功能,同时保证应用的流畅性和稳定性。配合其他库,如Gson或Jackson,可以方便地...
本篇文章将详细探讨如何在Android中使用AsyncHttpClient进行Cookie的读写操作。 首先,我们要了解Cookie的基本概念。Cookie是由服务器发送到客户端(浏览器或Android应用)的小型文本文件,用于存储会话数据,如...
1. **异步操作**:AsyncHttpClient的核心特性就是异步请求处理,它允许你在主线程中启动网络请求,然后在回调方法中处理结果,这样不会导致UI冻结,提高了应用的响应性。 2. **简单API**:AsyncHttpClient提供了...
综上所述,Android应用开发中的网络请求是一个关键领域,掌握HttpURLConnection和AsyncHttpClient的使用对于编写高效、稳定的网络功能至关重要。在实践中,应根据项目需求和团队偏好灵活选择合适的网络请求库,并...
在Android应用中,需要注意网络请求的生命周期管理,避免在Activity或Fragment销毁后还继续执行请求。可以使用`WeakReference`或者`LiveData`结合`ViewModel`来确保网络请求与UI组件的生命周期同步。 总之,...
总的来说,AsyncHttpClient 提供了一种高效、便捷的异步网络请求解决方案,它极大地简化了Android应用与服务器之间的通信,提高了应用的性能和用户体验。在实际项目中,结合其他库如Gson或Jackson进行JSON数据解析,...
在Android开发中,进行网络数据访问是常见的任务,特别是在处理大数据量时,为了不阻塞主线程,提高用户体验,通常会采用异步网络访问技术。本文将深入探讨"Http异步网络访问框架",主要围绕Android环境下的...
在Android开发中,异步网络请求是不可或缺的一部分,它使得应用程序能够与服务器进行交互,获取或发送数据,而不会阻塞用户界面。本教程将深入探讨一个基于`android_asynchttp_client`的简单实用的异步网络请求框架...
在Android开发中,异步操作是必不可少的一...正确理解和使用该框架,可以显著提升Android应用的网络性能和用户体验。在实际开发中,结合其他优秀库如Retrofit、Volley等,可以根据项目需求选择最适合的异步操作框架。
总结一下,本教程介绍了如何在Android应用中使用ListAdapter结合Gson解析JSON数据,以及通过AsyncHttpClient进行异步网络请求。首先,我们利用AsyncHttpClient发送GET请求获取JSON数据,然后用Gson将JSON转换为Java...
在移动应用开发中,尤其是Android或iOS平台,异步加载图片和异步访问网络是两个非常重要的技术。这两个概念能够显著提升用户体验,防止程序因为长时间阻塞主线程而导致的无响应,甚至内存溢出问题。下面我们将分别...
实验9主要涵盖了Android平台上的网络编程,涉及到的关键技术点包括网络请求、JSON解析以及图片加载。...通过完成这个实验,你将掌握如何在Android应用中实现从网络获取数据并显示在用户界面上的核心技能。
在Android应用开发中,网络访问是必不可少的一部分,尤其是在如今数据驱动的应用中。为了优化用户体验,开发者需要找到一种高效且简洁的方式来处理网络请求。这就是“网络访问异步框架”所要解决的问题。Android异步...
在Android应用开发中,图片加载和缓存是一个关键的环节,尤其对于那些需要频繁展示网络图片的应用来说。这个压缩包“安卓图片加载缓存相关-引用开源框架通过AsyncHttpClient实现网络图片查看器.rar”显然是一个关于...
在Android应用开发中,网络请求是不可或缺的一部分。为了提升用户体验,异步处理网络请求变得至关重要,而`Android-Async-Http`框架正是为此目的设计的一个强大工具。它由Leonardo Uribe创建,并在GitHub上开源,为...
AsyncHttpClient是由Loopj公司开发的,广泛应用于Android应用的网络通信中。其优点在于它的异步处理能力,可以避免网络请求导致的ANR(Application Not Responding)问题,同时支持多种HTTP方法,如GET、POST、PUT、...
在Android应用开发中,网络访问是必不可少的一部分,尤其是在与服务器进行数据交互时。"Android Http异步访问库"就是为了解决这个问题而设计的,它简化了在Android平台上进行网络请求的复杂性,使得开发者可以更高效...
AsyncHttpClient是Android应用开发中常用的一个异步HTTP客户端库,它简化了网络请求的处理,提供了高效的异步操作,使得开发者可以轻松地进行网络数据的获取。本篇将深入探讨AsyncHttpClient的封装、使用方法以及...