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)支持更换解析方式(gson、jackson、simplexml、protobuf、moshi、wire、scalars)
(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
Android常用网络请求框架Volley Retrofit (okHttp)的更多相关文章
- 基于Retrofit+RxJava的Android分层网络请求框架
目前已经有不少Android客户端在使用Retrofit+RxJava实现网络请求了,相比于xUtils,Volley等网络访问框架,其具有网络访问效率高(基于OkHttp).内存占用少.代码量小以及 ...
- 安卓开发常用网络请求框架OkHttp、Volley、XUtils、Retrofit对比
网络请求框架总结1.xutils 此框架庞大而周全,这个框架可以网络请求,同时可以图片加载,又可以数据存储,又可以 View 注解,使用这种框架很方便,这样会使得你整个项目对它依赖性太强,万一 ...
- Android常用http请求框架 简介及现状
JDK支持的HttpUrlConnection HttpUrlConnection是JDK里提供的联网API,是最原始最基本的API,大多数开源的联网框架基本上也是基于此进行的封装的.HttpUrlC ...
- 网络请求框架---Volley
去年的Google I/O大会为android开发者带来了一个网络请求框架,它的名字叫做Volley.Volley诞生的使命就是让Android的网络请求更快,更健壮,而且它的网络通信的实现是基于Ht ...
- Android网络请求框架之Retrofit实践
网络访问框架经过了从使用最原始的AsyncTask构建简单的网络访问框架(甚至不能称为框架),后来使用开源的android-async-http库,再到使用google发布的volley库,一直不懈的 ...
- android开发学习--网络请求框架RxJava+Retrofit
看了好多的博客,终于弄清楚了Rxjava和Retrofit,给大家推荐几个不错的文章: https://gank.io/post/56e80c2c677659311bed9841 这个文章是只用Ret ...
- 036 Android Xutils3网络请求框架使用
1.xUtils3 介绍 xUtils 中目前包括了主要的四大模块,分别为 DbUtils 模块.ViewUtils 模块.HttpUtils 模块以及 BitmapUtils 模块. xUtils3 ...
- Volley网络请求框架的基本用法
备注: 本笔记是参照了 http://blog.csdn.net/ysh06201418/article/details/46443235 学习之后写下的 简介: Volley是google官网退 ...
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(二),个人认为这次封装比较强大了
在前面已经初步封装了一个MVP的网络请求框架,那只是个雏形,还有很多功能不完善,现在进一步进行封装.添加了网络请求时的等待框,retrofit中添加了日志打印拦截器,添加了token拦截器,并且对Da ...
随机推荐
- 分布式 NewSQL 对比
1.TiDB: 说明: PingCAP 公司基于 Google Spanner / F1 论文实现的开源分布式 NewSQL 数据库. 开源分布式 NewSQL 关系型数据库 TiDB 是新一代开源分 ...
- MT【231】棋子方法数
设有5枚无区别的棋子放在如图$5*5$的棋盘的小方格中,放棋子的规则是每行每列放且仅放一个棋子,同时,不允许放在黑方格内,则共有______ 方法. 答案:5的错排数44.第一行的数不放第二列(相当于 ...
- BZOJ 193题纪念
- Helm使用详解
使用1.helm search 查看charts stable是官方的 local是自己的 2.查看repo helm repo list 3.安装 helm install stable/mysql ...
- hdu 2158 最短区间版大家来找碴(尺取法)
Problem Description 给定一个序列,有N个整数,数值范围为[0,N).有M个询问,每次询问给定Q个整数,可能出现重复值.要求找出一个最短区间,该区间要包含这Q个整数数值.你能找的出来 ...
- Codeforces-gym-101020 problem C. Rectangles
题目链接:http://codeforces.com/gym/101020/problem/C C. Rectangles time limit per test 2.0 s memory limit ...
- Python数据类型(列表和元组)
1.3 List(列表) 列表由一系列按特定顺序排列的元素组成. 在Python中,用方括号[ ]来表示列表,并用逗号来分隔其中的元素. 1.3.1 访问列表元素 在Python中,第一个列表元素的索 ...
- centos6.5下修改文件夹权限和用户名用户组
0.说明 Linux系统下经常遇到文件或者文件夹的权限问题,或者是因为文件夹所属的用户问题而没有访问的权限.根据我自己遇到的情况,对这类问题做一个小结. 在命令行使用命令"ll"或 ...
- CF1080
emmmm......ouuan大佬上紫了,我却没打...... 首先吐槽一波家长会和机房锁门,害我只能来打虚拟赛. 写了abcd四题,还是被ouuan大佬吊打....... 264名,应该能上分吧. ...
- mysql存储过程和常用流程控制
/* 该代码是创建了一个名叫"p4"的存储过程并设置了s1,s2,s3两个int型一个varchar型参数,还可以是其他数据类型,内部创建了x1,x2两个变量 DELIMITER是 ...