OkHttp 上手

优点

  1. 快、节省带宽。
  2. 支持 HTTP/2 和 SPDY。
  3. HTTP/2 和 SPDY 允许对同一个主机的所有请求,使用一个 socket。
  4. 如果不支持 SPDY 的话,可以用连接池减少请求等待时间。
  5. GZIP 缩小传输大小。
  6. 缓存响应(response caching)彻底避免重复请求。
  7. 网络异常时重试。
  8. 如果服务有多个 ip ,如果第一个 ip 链接失败时 OkHttp 会尝试切换到其他 ip 。failover
  9. OkHttp 2.0 API 支持同步阻塞式调用(synchronous blocking calls)和异步回调(async calls with callbacks)。
  10. 不需要重写网络相关代码就可以试用 OkHttp 。okhttp-urlconnection 模块实现了常用的 java.net.HttpURLConnection 的API,okhttp-apache 模块实现了 Apache HttpClient 的 API 。

Calls

  1. 支持重定向(302)等。默认自动 重定向。
  2. 如果 resposne 提出验证权限,OkHttp 会向 Authenticator 询问权限。
  3. 请求分为同步和异步
  • Synchronous:your thread blocks until the response is readable.
  • Asynchronous:you enqueue the request on any thread, and get called back on another thread when the response is readable.
  1. 请求可以从任何线程取消。如果取消时正在“writing the request body”或“reading the response body”,会收到一个 IOExceptioin 。

Connections

  1. 没读懂。

Recipes(菜谱)

  1. 默认是不缓存的。想要缓存响应(responses)的话,需要制定缓存目录和缓存大小。并且需要有 ETag 之类的 header 配合。 Response Caching

interceptors

  1. Interceptors 分为 Application InterceptorsNetwork Interceptors
  2. Interceptors 可以是一系列的。(Interceptors can be chained.)按顺序执行。
  3. 一般在 Interceptors 中做这些:
  • 压缩
  • 处理 http header
  • 打印日志
  • ...
  1. 如果自动重定向的话(302等),Network Interceptors 能拦截到两次,Application Intercepors 只能拦截到一次。因为重定向是在 OkHttp Core 中执行的。

HTTPS

还没看!

OkHttp 上手的更多相关文章

  1. [Android] 转-RxJava+MVP+Retrofit+Dagger2+Okhttp大杂烩

    原文url: http://blog.iliyun.net/2016/11/20/%E6%A1%86%E6%9E%B6%E5%B0%81%E8%A3%85/ 这几年来android的网络请求技术层出不 ...

  2. [ 转载 ] Okhttp的用法

    Android中OkHttp的使用 LuckyXiang 简书作者 02018-01-18 19:04 打开App Android中OkHttp的使用 官方网站 | Javadoc 1 简介 OkHt ...

  3. Android网络框架OkHttp之get请求(源码初识)

    概括 OkHttp现在很火呀.于是上个星期就一直在学习OkHttp框架,虽然说起来已经有点晚上手了,貌似是2013年就推出了.但是现在它版本更加稳定了呀.这不,说着说着,OkHttp3.3版本在这几天 ...

  4. OkHttp,一次无奈的使用

    一次使用OKHTTP的心痛历程 最近由于一些不得已的原因,接触到了OKHttp,说起来也挺Dan疼的,之前同事将生产附件上传地址配置成了测试地址,还好数量不多,没有造成太大的影响,况且的是这位同事又离 ...

  5. 【Python五篇慢慢弹】快速上手学python

    快速上手学python 作者:白宁超 2016年10月4日19:59:39 摘要:python语言俨然不算新技术,七八年前甚至更早已有很多人研习,只是没有现在流行罢了.之所以当下如此盛行,我想肯定是多 ...

  6. Impress.js上手 - 抛开PPT、制作Web 3D幻灯片放映

    前言: 如果你已经厌倦了使用PPT设置路径.设置时间.设置动画方式来制作动画特效.那么Impress.js将是你一个非常好的选择. 用它制作的PPT将更加直观.效果也是嗷嗷美观的. 当然,如果用它来装 ...

  7. ECharts数据图表系统? 5分钟上手!

    目录: 前言 简介 方法一:模块化单文件引入(推荐) 方法二:标签式单文件引入 [前言] 最近在捣鼓各种插件各种框架,发现这个ECharts还是比较不错的,文档也挺全的,还是中文的,给大家推荐一下. ...

  8. Android okHttp网络请求之Json解析

    前言: 前面两篇文章介绍了基于okHttp的post.get请求,以及文件的上传下载,今天主要介绍一下如何和Json解析一起使用?如何才能提高开发效率? okHttp相关文章地址: Android o ...

  9. 快速上手Unity原生Json库

    现在新版的Unity(印象中是从5.3开始)已经提供了原生的Json库,以前一直使用LitJson,研究了一下Unity用的JsonUtility工具类的使用,发现使用还挺方便的,所以打算把项目中的J ...

随机推荐

  1. INVALID_USER_SCODE问题的解决办法

    在用高德地图API的时候,还会遇见一个为题,就是总是提示:INVALID_USER_SCODE.当遇见这个问题的时候,一般的问题都是,注册key之后没有十分钟就开始使用这个key值了.另外一种情况就是 ...

  2. MySql中Blob二进制对象的处理

    BLOB (binary large object),二进制大对象,是一个可以存储二进制文件的容器. 可以用于存储图片等信息 Demo1:存储图片 String sql="INSERT IN ...

  3. Spring4分别整合mongo2.X和3.0

    1.pom文件添加: <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-jav ...

  4. ie6兼容性

    文本重复Bug 在IE6中,一些隐藏的元素(如注释.display:none;的元素)被包含在一个浮动元素里,就有可能引发文本重复bug.解决办法:给浮动元素添加display:inline;. 躲猫 ...

  5. syscall 中断号

    #ifndef __ASM_ARM_UNISTD_H #define __ASM_ARM_UNISTD_H #define __NR_OABI_SYSCALL_BASE 0x900000 #if de ...

  6. caffe绘制训练过程的loss和accuracy曲线

    转自:http://blog.csdn.net/u013078356/article/details/51154847 在caffe的训练过程中,大家难免想图形化自己的训练数据,以便更好的展示结果.如 ...

  7. bindingredirect 没有效果

    在搞在线聊天室的时候用到了SignalR 1.1.4,依赖于Newtonsoft.Json 4.5.0.0. 而我另外的dll又依赖Newtonsoft.Json 6.0.0.0 我只引用6.0.0. ...

  8. 红外 IR 协议原理分析

    1.概述:对多种红外遥控器的信号进行分析,其发出的红外指令中,引导码各不相同,而且后面的控制指令也有较大差别,甚至指令码的位数也不相同,原因是这些红外设计没有遵守相同的红外标准.但是其基本思想是相同的 ...

  9. Linux企业级项目实践之网络爬虫(2)——网络爬虫的结构与工作流程

    网络爬虫是捜索引擎抓取系统的重要组成部分.爬虫的主要目的是将互联网上的网页下载到本地形成一个或联网内容的镜像备份. 一个通用的网络爬虫的框架如图所示:

  10. NOI2010 海拔

    http://www.lydsy.com/JudgeOnline/problem.php?id=2007 平面图网络流. 好吧,其实我只会暴力的网络流,并不会平面图网络流. Orz~ http://w ...