zoukankan      html  css  js  c++  java
  • Android常用网络请求框架Volley Retrofit (okHttp)

    Android系统中主要提供了两种方式来进行HTTP通信,HttpURLConnection和HttpClient。在 Android 5.0 的时候 Google 就不推荐使用 HttpClient 了,到了 Android 6.0 (api 23) SDK,不再提供 org.apache.http.* (只保留几个类)

    Google的官方说明:HttpURLConnection类相比HttpClient,API效率更高,能够通过透明压缩响应缓存减少网络使用,并可最大限度降低耗电量。

    1.Volley特别适合数据量不大但是通信频繁的场景(APP大多是这种数据请求)

    优点:
    (1)自动调度网络请求;
    (2)高并发网络连接;
    (3)通过标准的 HTTP cache coherence(高速缓存一致性)缓存磁盘和内存透明的响应;
    (4)支持指定请求的优先级( 请求队列的优先级排序);
    (5)提供多样的取消机制:网络请求 cancel 机制,我们可以取消单个请求,或者指定取消请求队列中的一个区域;
    (6)框架容易被定制,例如,定制重试或者回退功能;
    (7)包含了调试与追踪工具;
    (8)默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下使用基于 HttpClient
    (9)提供简便的图片加载工具(其实图片的加载才是我们最为看重的功能)

    缺点:
    (1)不能下载文件:这也是它最致命的地方

    2.retrofit

    retrofit 是根据 okHttp 封装的框架,它的底层网络请求就是使用okHttp的。

    优点:
    (1)支持okhttp
    (2)注解处理,简化代码
    (3)支持上传和下载文件
    (4)支持更换解析方式(gsonjacksonsimplexmlprotobufmoshiwirescalars)
    (5)支持多种http请求库(Guava、Java8、RXJava )

    3.okHttp okHttp3

    OkHttp 是一个相对成熟的解决方案,据说 Android4.4 的源码中可以看到 HttpURLConnection 已经替换成 OkHttp 实现了。在 Android 6.0 中底层的源码已经使用了 OKHttp ,这个是可以确定的。

    OkHttp 处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个 IP 连接失败的时候,OkHttp 会自动尝试下一个 IP。OkHttp 还处理了代理服务器问题SSL握手失败问题

    使用 OkHttp 无需重写您程序中的网络代码。OkHttp 实现了几乎和Java.NET.HttpURLConnection 一样的API。如果你用了 Apache HttpClient,则 OkHttp 也提供了一个对应的 okhttp-apache 模块。

    注:Volley也可以通过设置将okHttp3作为其底层网络请求实现。

    使用okHttp实现HttpStack接口,而后获取volley请求队列的方法: RequestQueue requestQueue = Volley.newRequestQueue(this, new OkHttpStack(new OkHttpClient()));

    HttpURLConnection HttpClient OKHttp Get and post 用法对比

    okhttp3与旧版本okhttp的区别分析

     

    Volley 的主要特点

    (1). 扩展性强。Volley 中大多是基于接口的设计,可配置性强。
    (2). 一定程度符合 Http 规范,包括返回 ResponseCode(2xx、3xx、4xx、5xx)的处理,请求头的处理,缓存机制的支持等。并支持重试及优先级定义。
    (3). 默认 Android2.3 及以上基于 HttpURLConnection,2.3 以下基于 HttpClient 实现,这两者的区别及优劣在4.2.1 Volley中具体介绍。
    (4). 提供简便的图片加载工具。

     

    http://www.cnblogs.com/bvin/p/3291921.html?utm_source=tuicool&utm_medium=referral

    http://blog.csdn.net/fengqiaoyebo2008/article/details/42963915

    http://blog.csdn.net/guolin_blog/article/details/17482165

  • 相关阅读:
    一些你可能用到的代码
    iOS 键盘下去的方法
    iOS设计模式汇总
    随笔
    Spring cloud config 分布式配置中心 (三) 总结
    Spring cloud config 分布式配置中心(二) 客户端
    Spring cloud config 分布式配置中心(一) 服务端
    jdbcUrl is required with driverClassName spring boot 2.0版本
    JpaRepository接口找不到 spring boot 项目
    解决IntelliJ “Initialization failed for 'https://start.spring.io'
  • 原文地址:https://www.cnblogs.com/genggeng/p/6764430.html
Copyright © 2011-2022 走看看