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

  • 相关阅读:
    阿里笔试题
    springboot-security-jwt
    java 面试架构篇
    java 面试题 mybatis 篇
    Java 多线程并发工具类
    java 面试题 高阶版
    给你的右键菜单添加“VScode”
    HTML重点知识点汇总
    HTML5知识点小结
    给博客园添加百度统计方法
  • 原文地址:https://www.cnblogs.com/genggeng/p/6764430.html
Copyright © 2011-2022 走看看