zoukankan      html  css  js  c++  java
  • Android异步的HTTP客户端

    概观

    基于异步回调HTTP客户端的Android内置Apache的HttpClient的库顶 。您的应用程序的主UI线程之外的所有请求,但使用Android的处理程序消息传递创建回调将在同一线程上执行任何的回调逻辑。

    特点

    • 异步的 HTTP请求,处理响应匿名回调
    • HTTP请求发生在UI线程之外
    • 请求使用一个线程池使用并发资源封顶
    • GET / POST PARAMS建设者(RequestParams)
    • 没有额外的第三方库的多部分文件上传
    • 微小的尺寸到您的应用程序的开销,只有25KB的一切
    • 优化的为参差不齐移动连接的智能自动请求重试
    • 自动gzip响应的解码支持超快的请求
    • 二进制文件(图像等)与BinaryHttpResponseHandler下载
    • 内置响应解析成JSON JsonHttpResponseHandler
    • 持久性cookie存储,保存到你的应用程序的SharedPreferences里的饼干

    热门应用程序和开发人员在生产中使用

    Instagram的
    Instagram的第1张照片的应用程序在Android上,有超过1000万用户
    Pinterest的
    热门在线插接。组织和共享你所爱的东西。
    前线突击队谷氨酸(Glu游戏)
    #1第一人称射击游戏,在Android上,由Glu游戏。
    Heyzap
    社交游戏与数以百万计的用户发现应用程序
    提出
    姿势是排名第一的时尚应用程序共享和发现新的风格
    数以千计的应用程序...
    异步HTTP在生产中使用由数千顶部的应用程序。

    安装及基本用法

    从github上下载最新的jar文件,并将其放置在您的Android应用程序的 库/文件夹。

    导入的http包装。

    导入 com.loopj.android.http。* ;
    

    创建一个新的AsyncHttpClient实例,并提出一个请求:

    AsyncHttpClient client = new AsyncHttpClient();
    client.get("http://www.google.com", new AsyncHttpResponseHandler() {
        @Override
        public void onSuccess(String response) {
            System.out.println(response);
        }
    });
    

    推荐用途:做一个静态的HTTP客户端

    在这个例子中,我们将一个HTTP客户端类的静态访问,使其易于沟通Twitter的API。

    导入 com.loopj.android.http。* ;
    
    的公共 类 TwitterRestClient  { 
      私人 静态 最终 字符串 BASE_URL  =  “http://api.twitter.com/1/的;
    
      私人 静态 AsyncHttpClient  客户端 =  新 AsyncHttpClient ();
    
      public static void get(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
          client.get(getAbsoluteUrl(url), params, responseHandler);
      }
    
      public static void post(String url, RequestParams params, AsyncHttpResponseHandler responseHandler) {
          client.post(getAbsoluteUrl(url), params, responseHandler);
      }
    
      私人 静态 字符串 getAbsoluteUrl (弦乐 relativeUrl ) { 
          回报 BASE_URL  +  relativeUrl ; 
      } 
    }
    

    这使得它很容易在你的代码中使用Twitter的API:

    进口 ORG JSON。* ; 
    进口 com.loopj.android.http * ;
    
      
             
                
                
                    
                    第一个事件公共时间轴
                    的JSONObject  firstEvent  =  时间表得到(0 ); 
                    弦乐 tweetText  =  firstEvent 的getString (“文本” );
    
                    / /做一些与响应
                    系统。出来。调用println (tweetText ); 
                } 
            }); 
        } 
    }
    

    退房 AsyncHttpClient RequestParams AsyncHttpResponseHandler Javadoc中更多的细节。

    永久性的Cookie存储与PersistentCookieStore

    这个库还包括一个PersistentCookieStore这是一个实施Apache HttpClient的CookieStore的自动保存cookies来SharedPreferences里 存储在Android设备上的接口。

    这是非常有用的,如果你要使用cookies来管理,因为用户身份验证会话保持登录后,即使关闭并重新打开你的应用程序。

    首先,创建的一个实例AsyncHttpClient

    AsyncHttpClient  MyClient的 =: 新 AsyncHttpClient ();
    

    现在设置客户端的cookie存储的活动或应用程序上下文(通常就足够了),构造一个新实例 PersistentCookieStore

    PersistentCookieStore myCookieStore = new PersistentCookieStore(this);
    myClient.setCookieStore(myCookieStore);
    

    现在将存储在持久性cookie存储从服务器收到任何cookie。

    要添加自己的饼干到店里,简单地构造一个新的cookie和呼叫的addCookie

    BasicClientCookie newCookie = new BasicClientCookie("cookiesare", "awesome");
    newCookie.setVersion(1);
    newCookie.setDomain("mydomain.com");
    newCookie.setPath("/");
    myCookieStore.addCookie(newCookie);
    

    参见更多信息的PersistentCookieStore Javadoc

    添加GET / POST参数RequestParams

    RequestParams类可选GET或POST参数用于添加到您的要求。RequestParams可以建成,并以各种方式建造:

    创建空RequestParams和立即加入一些参数:

    RequestParams  PARAMS  =  新 RequestParams (); 
    PARAMS 。把(“钥匙” , “价值” ); 
    PARAMS 。把(“多” , “数据” );
    

    创建为单个参数RequestParams

    RequestParams  PARAMS  =: 新 RequestParams (“单一” , “价值” );
    

    从现有地图的键/值字符串创建RequestParams

    HashMap<String, String> paramMap = new HashMap<String, String>();
    paramMap.put("key", "value");
    RequestParams params = new RequestParams(paramMap);
    

    更多信息见RequestParams的Javadoc

    RequestParams上传文件

    RequestParams类还支持多方文件上传,如下:

    InputStream中添加上传RequestParams的

    InputStream myInputStream = blah;
    RequestParams params = new RequestParams();
    params.put("secret_passwords", myInputStream, "passwords.txt");
    

    文件对象添加给RequestParams上传:

    File myFile = new File("/path/to/file.png");
    RequestParams params = new RequestParams();
    try {
        params.put("profile_picture", myFile);
    } catch(FileNotFoundException e) {}
    

    字节数组添加上传RequestParams的

    byte[] myByteArray = blah;
    RequestParams params = new RequestParams();
    params.put("soundtrack", new ByteArrayInputStream(myByteArray), "she-wolf.mp3");
    

    更多信息见RequestParams的Javadoc

    下载二进制数据BinaryHttpResponseHandler的

    可用于BinaryHttpResponseHandler类提取二进制数据,如图像和其他文件。例如:

        
            
       
        
            
            做一些与文件
        } 
    });
    

    参见更多信息的BinaryHttpResponseHandler Javadoc

    添加HTTP基本身份验证凭据

    有些要求可能需要用户名/密码,凭证处理时使用HTTP基本接入认证请求的API服务。您可以使用的方法setBasicAuth()提供您的凭据。

    设置用户名/密码,任何一台主机和领域为特定的请求。默认情况下,认证范围是任何主机,端口和境界。

    AsyncHttpClient client = new AsyncHttpClient();
    client.setBasicAuth("username","password/token");
    client.get("http://example.com");
    

    您也可以提供一个更具体的认证范围(推荐)

    AsyncHttpClient client = new AsyncHttpClient();
    client.setBasicAuth("username","password", new AuthScope("example.com", 80, AuthScope.ANY_REALM));
    client.get("http://example.com");
    

    更多信息见RequestParams的Javadoc

    从源代码构建

    要建立一个从源代码的jar文件,首先要android的异步HTTP github上库的克隆。然后,您需要复制 local.properties.dist的文件local.properties和编辑sdk.dir的 设置为指向,你必须安装Android SDK的。然后,您可以运行:

    蚂蚁包
    

    这将生成一个文件名 ??为安卓异步HTTP version.jar的

    报告错误或功能要求

    请报告任何错误或功能要求github的问题页面上为这个项目在这里:

    https://github.com/loopj/android-async-http/issues

    积分与提供者

    詹姆斯?史密斯(http://github.com/loopj
    创建者和维护者
    弥Fivecoate(http://github.com/m5
    主要贡献者,包括原RequestParams
    Droid的富项目(https://github.com/kaeppler/droid-fu
    灵感和代码更好HTTP试
    拉斐尔桑切斯(http://blog.rafaelsanches.com
    原始SimpleMultipartEntity代码
    安东尼?佩尔绍德(http://github.com/apersaud
    增加了支持HTTP基本身份验证请求。
    林登达林(http://github.com/coreform
    新增支持二进制/图像响应

    许可证

    Android的异步HTTP客户端下发布的Andr??oid友好的Apache许可证2.0版。在这里阅读完整的许可证:

    http://www.apache.org/licenses/LICENSE-2.0

    作者简介

    詹姆斯?史密斯,英国的企业家和开发商,总部设在旧金山。

    我的联合创始人西蒙?梅纳德Bugsnag,2009至2012年,我带领产品团队Heyzap首席技术官。

  • 相关阅读:
    java数组
    python中的换行与不换行
    金融业务知识2---资金的时间价值与跨时期优化
    金融业务知识1---金融和金融系统
    你真的理解正向代理和反向代理吗?
    webpack(9)plugin插件功能的使用
    webpack(8)vue组件化开发的演变过程
    webpack(7)webpack使用vue配置
    webpack(6)webpack处理图片
    webpack(5)webpack处理css文件
  • 原文地址:https://www.cnblogs.com/xieyuan/p/3787254.html
Copyright © 2011-2022 走看看