Android 网络请求框架
1.okHttp
- 特点
简单、灵活、无连接、无状态
优势:
- 谷歌官方API在6.0之后在Android SDK中移除了HttpClient,然后他火了起来,
- 他支持SPDY(谷歌开发的基于TCP应用层协议增强的http协议),允许连接同一主机的所有请求分享一个socket,如果SPDY不可用,会使连接池减少请求延迟,
- 使用GZIP压缩下载内容,并且压缩操作是透明的,利用响应缓存来避免重复的网络请求。
- 当网络出现问题,okhttp依然有效,他将从常见的连接问题当中回复,如果服务器有多个ip地址,当一个ip地址连接失败,会尝试连接其他的地址,这对ipV4和ipV6以及寄宿在多个数据中心的服务而言,很有必要。
- get请求
- post请求
- 基于Http的文件上传
- 文件下载
- 加载图片
- 支持请求回调,直接返回对象、对象集合
- 支持session的保持
使用步骤:
0.添加依赖
1.创建OKHttpClient实例
mOkHttpClient = new OkHttpClient();2.构建request|,build是辅助类
mGetRequest = new Request.Builder().url(Constants.GET_URL).build();3.获取网络请求
Call call = mOkHttpClient.newCall(mGetRequest);4.执行网络请求
(同步\异步:同步不会开启线程,需要去开启,否则报异常,异步会开启子线程)
Response response = call.execute();5.获取response,处理响应结果
if (response.isSuccessful()) {
22. String reponseStr = response.body().string();
23. Log.e(TAG, "同步GET请求成功 ===========" + reponseStr);
24. } else {
25. Log.e(TAG, "同步GET请求失败 ===========, code = " + response.code());
26. }
4.异步:
call.enqueue(new Callback() {
@Override
public void onFailure(Request request, IOException e) {
Log.e(TAG, "异步GET请求失败 ===========, code = " + e.getMessage());
}
@Override
public void onResponse(Response response) throws IOException {
// 5.处理响应的结果
if (response.isSuccessful()) {
String reponseStr = response.body().string();
Log.e(TAG, "异步GET请求成功 ===========" + reponseStr);
} else {
Log.e(TAG, "异步GET请求失败 ===========, code = " + response.code());
}
}
});
2.Volley
在进行网络通信时,一般使用AsyncTask,AsyncTaskLoader,HttpURLConnection,HttpClient等,在2013年提出了新的网络通信框架Volley。
Volley 在android 2.3以上版本使用HttpURLConnection完成网络操作
在Android 2.3以下版本使用HttpClient来完成网络操作
- 特点
- 自动调度网络请求
- 支持并发网络连接,支持单个或多个请求
- 支持标准的HTTP缓存
- 支持请求的优先级
- 提供调试和跟踪工具
优点:
- 支持任意的数据传输格式(图片,字符串,json以及自己定义的数据格式),速度快
缺点:
由于是在内存中解析和处理数据,不适合大量数据的下载-------如果想要下载大的文件可以使用系统的DowloadManager
3.Retrofit
Android 网络请求框架的更多相关文章
- Android网络请求框架AsyncHttpClient实例详解(配合JSON解析调用接口)
最近做项目要求使用到网络,想来想去选择了AsyncHttpClient框架开进行APP开发.在这里把我工作期间遇到的问题以及对AsyncHttpClient的使用经验做出相应总结,希望能对您的学习有所 ...
- Android网络请求框架
本篇主要介绍一下Android中经常用到的网络请求框架: 客户端网络请求,就是客户端发起网络请求,经过网络框架的特殊处理,让后将请求发送的服务器,服务器根据 请求的参数,返回客户端需要的数据,经过网络 ...
- Android 网络请求框架android-async-http问题
今天通过接口请求服务器的一些app数据,发现一个很奇怪的问题,请求一个链接的时候,通常在第一次请求发起的时候没有什么问题,能很快的拿到数据,但是 往后再去请求的时候就会等待很久,而且最后会请求失败,一 ...
- Android 网络请求框架Retrofit
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,OkHttp现在已经得到Google官方认可,大量的app都采用OkHttp ...
- Android网络请求框架之Retrofit实践
网络访问框架经过了从使用最原始的AsyncTask构建简单的网络访问框架(甚至不能称为框架),后来使用开源的android-async-http库,再到使用google发布的volley库,一直不懈的 ...
- Java/Android 网络请求框架/库
Android 图片缓存框架 最上面的最优先 com.facebook.fresco:fresco:0.12.0 7.26.2016最新 Universal-Image ...
- Ok-Http | Android 网络请求框架使用方式
POST : package he3.sd.util; import com.parkingwang.okhttp3.LogInterceptor.LogInterceptor; import jav ...
- RxAndroid+RxJava+Gson+retrofit+okhttp初步搭建android网络请求框架
新建工程集成, 一.工具集成(2017-4-27) 首先第一步集成retrofit retrofit 的 git 网站: https://github.com/square/retrofit 在git ...
- xamarin android网络请求总结
xamarin android中网络请求的框架非常多,在项目中使用的是第三方的一个网络请求框架restsharp,应该是github上.net网络请求最多star的框架,没有之一.这里就简单汇总了其他 ...
随机推荐
- python第二天,list和tuple
概念:list是集合,且是可变集合,tuple是元组集合,不可变集合. 1.Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素. 主要知识点:初始化 ...
- 关于 tp5.0 阿里云 oss 上传文件操作
tp5.0 结合阿里云oss 上传文件 1.引入 oss 的空间( composer install 跑下第三方拓展包及核心代码包) 备注:本地测试无误,放到线上有问题 应该是移动后的路劲(相对于服 ...
- Spotlight LGWR1 一直告警
http://www.itpub.net/thread-1181372-1-1.html
- Windows中Anaconda,Tensorflow 和 Pycharm的安装和配置
Anaconda完全入门指南 https://www.jianshu.com/p/eaee1fadc1e9 [安装不要按此条链接进行] Windows中 Anacond ...
- mvc5怎么给所有action都设置几个公用的ViewBag
最近开发项目中遇到这样的问题,因为有多个同步的页面,所以需要在多个同步页面上有相同的值返回回来,经过一系列的思维,我们把思维整理出来. public ActionResult Index() { Vi ...
- Scala 继承
1. 继承 Scala 通过 extends 关键字来继承类. 那么继承一个类有什么好处呢? 子类拥有继承自超类的方法和字段(即为val(常量), var(变量)所定义的) 可以添加自己需要的新方法和 ...
- MySQL报错InnoDB: A long semaphore wait【转】
mysql登录后无法执行命令如show processlist 查看MySQL错误日志 参考以下方法,执行 1.系统层面 [root@pisphkdcbsql01 ~]# cat /proc/sys/ ...
- Alpha冲刺(8/10)
目录 摘要 团队部分 个人部分 摘要 队名:小白吃 组长博客:hjj 作业博客:冲刺倒计时之8 团队部分 后敬甲(组长) 过去两天完成了哪些任务 首页重新设计 课程时间线确定 答辩准备 接下来的计划 ...
- MySQL基本语句、存储引擎
数据库服务器中存放的是 库(文件加) 表(文件) 表里面是记录(一行数据)quit or exit 退出客户端\s \c \G 库(文件) 创建 create database ...
- Centos 7 安装Docker-ce记录
以前尝试过在centos 6上安装Docker , 需要升级内核,支持aufs,比较麻烦:在使用过程中出现过Docker挂掉的情况,官方建议在64 位 centos 7 上运行,本文将安装步骤记录下来 ...