Android网络请求的第三库AsyncHttpclient

 项目的官方网站:http://loopj.com/android-async-http/;对应的github地址https://github.com/loopj/android-async-http
 它是专门针对Android在Apache的HttpClient基础上构建的异步的callback-based http client。所有的请求全在UI线程之外发生,而callback发生在创建它的线程中,应用了Android的Handler发送消息机制。你也可以把AsyncHttpClient应用在Service中或者后台线程中,库代码会自动识别出它所运行的context。它的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。
  AsyncHttpclient的使用简单的可以分为3步:
1.创建AsyncHttpclient
AsyncHttpclient httpclient=new AsyncHttpclient();
2.(根据你的需要,是否需要上传参数)上传参数
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
3.进行网络请求请求
httpclient.get("http://www.google.com", new AsyncHttpResponseHandler() {
    @Override
    public void onStart() {
        // called before request is started
    }
    @Override
    public void onSuccess(int statusCode, Header[] headers, byte[] response) {
        // called when response HTTP status is "200 OK"
    }
 
    @Override
    public void onFailure(int statusCode, Header[] headers, byte[] errorResponse, Throwable e) {
        // called when response HTTP status is "4XX" (eg. 401, 403, 404)
    }
 
    @Override
    public void onRetry(int retryNo) {
        // called when request is retried
    }
});
**** 如果你想的链接返回的是String,只需要这时只需要匿名实现一个TextHttpResponseHandle,其继承自AsyncHttpResponse,并将原生的字节流根据指定的encoding转化成了string对象。
代码如下:
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("key", "value");
params.put("more", "data");
client.get("http://www.google.com", params, new
    TextHttpResponseHandler() {
        @Override
        public void onSuccess(int statusCode, Header[] headers, String response) {
            System.out.println(response);
        }
 
        @Override
        public void onFailure(int statusCode, Header[] headers, String responseBody, Throwable error) {
            Log.d("ERROR", error);
        }    
    }
);
**** 如果你想的链接返回的是json,只需要 这时只需要匿名实现一个 JsonHttpResponseHandler
String url = "https://ajax.googleapis.com/ajax/services/search/images";
AsyncHttpClient client = new AsyncHttpClient();
RequestParams params = new RequestParams();
params.put("q", "android");
params.put("rsz", "8");
client.get(url, params, new JsonHttpResponseHandler() {            
    @Override
    public void onSuccess(int statusCode, Header[] headers, JSONObject response) {
       // Handle resulting parsed JSON response here
    }
    @Override
    public void onSuccess(int statusCode, Header[] headers, JSONArray response) {
      // Handle resulting parsed JSON response here
    }
});
注意:将 android-async-http第三方的库引进项目中,有可能会因为cz.msebera.android.httpclient.Header[] headers找不到而报错,所以将另外一个jar包的链接地址给大家,一同引入项目即可。httpclient.jar包连接:http://mvnrepository.com/artifact/cz.msebera.android/httpclient/4.3.6。




  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
城市应急指挥系统是智慧城市建设的重要组成部分,旨在提高城市对突发事件的预防和处置能力。系统背景源于自然灾害和事故灾难频发,如汶川地震和日本大地震等,这些事件造成了巨大的人员伤亡和财产损失。随着城市化进程的加快,应急信息化建设面临信息资源分散、管理标准不统一等问题,需要通过统筹管理和技术创新来解决。 系统的设计思路是通过先进的技术手段,如物联网、射频识别、卫星定位等,构建一个具有强大信息感知和通信能力的网络和平台。这将促进不同部门和层次之间的信息共享、交流和整合,提高城市资源的利用效率,满足城市对各种信息的获取和使用需求。在“十二五”期间,应急信息化工作将依托这些技术,实现动态监控、风险管理、预警以及统一指挥调度。 应急指挥系统的建设目标是实现快速有效的应对各种突发事件,保障人民生命财产安全,减少社会危害和经济损失。系统将包括预测预警、模拟演练、辅助决策、态势分析等功能,以及应急值守、预案管理、GIS应用等基本应用。此外,还包括支撑平台的建设,如接警中心、视频会议、统一通信等基础设施。 系统的实施将涉及到应急网络建设、应急指挥、视频监控、卫星通信等多个方面。通过高度集成的系统,建立统一的信息接收和处理平台,实现多渠道接入和融合指挥调度。此外,还包括应急指挥中心基础平台建设、固定和移动应急指挥通信系统建设,以及应急队伍建设,确保能够迅速响应并有效处置各类突发事件。 项目的意义在于,它不仅是提升灾害监测预报水平和预警能力的重要科技支撑,也是实现预防和减轻重大灾害和事故损失的关键。通过实施城市应急指挥系统,可以加强社会管理和公共服务,构建和谐社会,为打造平安城市提供坚实的基础。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值