android开源框架android-async-http使用

开发android app 需要进行获取网络数据或者向服务器发送数据操作,这些数据传送可以通过android-async-http开源框架来帮我实现。android-async-http使用起来也很简单。

android-async-http 项目主页https://github.com/loopj/android-async-http 可供下载源代码和jar包。

在Android项目中添加jar包值lib或者在build.gradle中添加如下依赖

dependencies {
    XXXXXXX
    //android-async-http
    compile 'com.loopj.android:android-async-http:1.4.8'
}
此时就可以使用android-async-http获取网络上的数据了。
 
  
 
  
public class HttpUtil {
   private static AsyncHttpClient client = new AsyncHttpClient();

   static {
      client.setTimeout(15000); // 超时时间,默认为10s DEFAULT_SOCKET_TIMEOUT = 10 * 1000;

   }

   public static void get(String url, AsyncHttpResponseHandler res) {
      client.get(url, res);
   }

   public static void get(String url, RequestParams params, AsyncHttpResponseHandler res) {
      client.get(url, params, res);
   }

   public static void get(String url, JsonHttpResponseHandler res) {
      client.get(url, res);
   }

   public static void get(String url, RequestParams params, JsonHttpResponseHandler res) {
      client.get(url, params, res);
   }

   public static void get(String url, BinaryHttpResponseHandler bHandler) {
      client.get(url, bHandler);
   }

   public static void post(String url, AsyncHttpResponseHandler res) {
      client.post(url, res);
   }

   public static void post(String url, RequestParams params, AsyncHttpResponseHandler res) {
      client.post(url, params, res);
   }

   public static void post(String url, JsonHttpResponseHandler res) {
      client.post(url, res);
   }

   public static void post(String url, RequestParams params, JsonHttpResponseHandler res) {
      client.post(url, params, res);
   }

   public static AsyncHttpClient getClient() {
      return client;
   }
}

这里通过AsyncHttpClient实现异步的数据获取。它的feature包括:
 
1. 发送异步http请求,在匿名callback对象中处理response;
 
2. http请求发生在UI线程之外;
 
3. 内部采用线程池来处理并发请求;
 
4. GET/POST 参数构造,通过RequestParams类。
 
5. 内置多部分文件上传,不需要第三方库支持;
 
6. 流式Json上传,不需要额外的库;
 
7. 能处理环行和相对重定向;
 
8. 和你的app大小相比来说,库的size很小,所有的一切只有90kb;
 
9. 自动智能的请求重试机制在各种各样的移动连接环境中;
 
10. 自动的gzip响应解码;
 
11. 内置多种形式的响应解析,有原生的字节流,string,json对象,甚至可以将response写到文件中;
 
12. 永久的cookie保存,内部实现用的是Android的SharedPreferences;
 
13. 通过BaseJsonHttpResponseHandler和各种json库集成;
 
14. 支持SAX解析器;
 
15. 支持各种语言和content编码,不仅仅是UTF-8。

之后我们就可以使用HttpUtil来完成我们的数据获取功能了,根据需要override AsyncHttpResponseHandler
RequestParams params = new RequestParams();
params.put(“key", "value");//通过键值对的方式添加需要的参数
String url = "http://hostname:8088/your_url";
HttpUtil.get(url , params, new JsonHttpResponseHandler() {
    @Override
    public void onSuccess(int statusCode, Header[] headers, JSONArray object) {//这里可根据返回数据决定是array还是objec
        super.onSuccess(statusCode, headers, object);
        Log.v("SearchActivity", object.toString());
        
    }

 
   
    @Override
    public void onFailure(int statusCode, Header[] headers, Throwable throwable, 
	JSONArray errorResponse) {
        super.onFailure(statusCode, headers, throwable, errorResponse);
    }

@Override  
    public void onFailure(int statusCode, Header[] headers, Throwable throwable, 
	JSONObject errorResponse) {        
	super.onFailure(statusCode, headers, throwable, errorResponse);
    }    
    @Override
    public void onFailure(int statusCode, Header[] headers, String responseString, 
	Throwable throwable) {
        super.onFailure(statusCode, headers, responseString, throwable);
     }
});
 
   
因为我们的操作用到了网络进行数据传输。所以我们的app需要网络权限,在AndroidManifest.xml中添加
<uses-permission android:name="android.permission.INTERNET" />

是不是很简单,现在就可以专心处理我们所需要的数据了。

你可能感兴趣的:(Java)