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的框架,没有之一.这里就简单汇总了其他 ...
随机推荐
- Nginx系列1:ubuntu16.04编译出适合自己的nginx服务器
1.下载nginx nginx官网:nginx.org tar.gz文件 解压缩命令: wget https://nginx.org/download/nginx-1.14.2.tar.gz #下载n ...
- CF1105E Helping Hiasat
题目地址:CF1105E Helping Hiasat 首先将问题转化成图论:对每个人建立一个点,将同一次修改后的所有人代表的点两两连一条边,那么最终所求的就是这个图的最大独立集 我们知道最大独立集是 ...
- Elasticsearch 5.4.3实战--环境搭建
1. 选择搭建的服务器信息 $ uname -a Linux SA0124 2.6.32-642.11.1.el6.x86_64 #1 SMP Fri Nov 18 19:25:05 UTC 2016 ...
- ES6学习笔记七Generator、Decorators
Generator异步处理 { // genertaor基本定义,next()一步步执行 let tell=function* (){ yield 'a'; yield 'b'; return 'c' ...
- Windows登录类型及安全日志解析
Windows登录类型及安全日志解析 一.Windows登录类型 如果你留意Windows系统的安全日志,在那些事件描述中你将会发现里面的“登录类型”并非全部相同,难道除了在键盘上进行交互式登录(登录 ...
- Nikitosh 和异或 —— 一道 trie 树的题用可持久化 trie 水 然后翻车了...
题意简介 题目就是叫你找两个不重合的非空区间,使得这两个区间里的数异或后相加的和最大 (看到异或,没错就决定是你了可持久化trie!) 思路 水一波字典树,莫名觉得这题可持久化能过,于是水了一发挂了, ...
- Unity中的GC以及优化
[简介] 常见的 Unity GC 知识点总结出来的思维导图 Unity 官方文档,正巧在博客园发现了已经有位大神(zblade)把原文翻译出来了,而且质量很高~,译文地址 在这里.下面我就可耻地把译 ...
- WebApi中使用session
webapi默认是不支持session的,要通过一些手动配置来开启Session功能 在Global.asax里添加: 导入命名空间: using System.Web.SessionState; p ...
- 解决:Gitlab的developer角色的人没有push权限无法提交(转)
问题 几位同事合作搞一些东西,打算在Gitlab上建一个仓库,然后协同开发.建好仓库后,将其他几位同事添加进来,角色分配为Developer. 之后提交初始代码到master分支后,他们用source ...
- <转载>关系规范化之求最小函数依赖集(最小覆盖)
原文链接http://blog.csdn.net/icurious/article/details/51240114 最小函数依赖集 一.等价和覆盖 定义:关系模式R<U,F>上的两个依赖 ...