OKHTTP讲义

 OKHTTP:
1.为什么要使用okhttp?
使用范围
OkHttp支持Android 2.3及其以上版本。 对于java JDK1.7以上。
官方英文网站
中文社区
Android系统提供了两种HTTP通信类,HttpURLConnection和HttpClient。
尽管Google在大部分安卓版本中推荐使用HttpURLConnection,但是这个类相比HttpClient实在是太难用,太弱爆了。
OkHttp是一个相对成熟的解决方案,据说Android4.4的源码中可以看到HttpURLConnection已经替换成OkHttp实现了。所以我们更有理由相信OkHttp的强大。

okhttp的优点和不足
1、优点
支持SPDY, 可以合并多个到同一个主机的请,使用连接池技术减少请求的延迟(如果SPDY是可用的话) ,
SPDY协议是Google提出的基于传输控制协议(TCP)的应用层协议,通过压缩、多路复用和优先级来缩短加载时间。该协议是一种更加快速的内容传输协议。
使用GZIP压缩减少传输的数据量,缓存响应避免重复的网络请求、拦截器等等。
2、缺点
第一缺点是消息回来需要切到主线程,主线程要自己去写,第二传入调用比较复杂。

okhttp 的机制原理

一、介绍
OKHttp是一款高效的HTTP客户端,支持连接同一地址的链接共享同一个socket,通过连接池来减小响应延迟,
还有透明的GZIP压缩,请求缓存等优势,其核心主要有路由、连接协议、拦截器、代理、安全性认证、连接池以
及网络适配,拦截器主要是指添加,移除或者转换请求或者回应的头部信息,总流程图如下:
OKHTTP讲义

OKHTTP讲义

基础使用:








//    okhttp实现HttpPost 网络访问
//square 公司出的Http请求库;    
//android 原始类 HttpUrlconnection和httpClient;

//高级用法
//    基于Http Post的文件上传(类似表单)
//    多文件和多参数同时上传
MultipartBuilder表单传入
//    大文件下载和下载进度回调
//    大文件上传和上传进度回调
//    支持session的保持
//    支持自签名网站https的访问,提供方法设置下证书就行
//    支持根据Tag取消请求


//    okhttp实现HttpGet  网络访问
1.实例化:OkHttpClient;
2.获取对象 Request (Request 是okhttp中访问请求builder是一个辅助类);
3.获取对象Response ,获取call对象调用execute;
4.//获取Responsedbody对象。通过//获取Responsed对象body方法获取数据;
5.从Responsedbody对象中获取服务器返回的数据
//    okhttp实现HttpPost  网络访问(json,键值对)
1.builder放入键值对
2.获取requestbody对象
3.获取request对象,将reqbodybody放入它
4.获取response对象
5.获取responsebody对象
6从response中获取服务器返回数据


OkHttp的execute的方法是同步方法,
OkHttp的enqueue的方法是异步方法,


RequestBody的数据格式都要指定Content-Type,常见的有三种:
  • application/x-www-form-urlencoded 数据是个普通表单
  • multipart/form-data 数据里有文件
  • application/json 数据是个json
附加知识点:

BGP(边缘网关协议 Border Gateway Protocol)
Bluetooth(蓝牙)

DHCP(动态主机配置协议 Dynamic Host Configuration Protocol)
DNS(域名服务 Domain Name Service)

F
FTP(文件传输协议 File Transfer Protocol)21
H
HDLC(高级数据链路控制协议 High-level Data Link Control)
HELLO(routing protocol)
HTTP 超文本传输协议 80
HTTPS 安全超级文本传输协议
I
ICMP (互联网控制报文协议 Internet Control Message Protocol)
IDRP (InterDomain Routing Protocol)
IEEE 802
IGMP (Internet Group Management Protocol)
IGP (内部网关协议 Interior Gateway Protocol )
IMAP
IP (互联网协议 Internet Protocol)
IPX
IS-IS(Intermediate System to Intermediate System Protocol)
L
LCP(链路控制协议 Link Control Protocol)
LLC(逻辑链路控制协议 Logical Link Control)
M
MLD(多播监听发现协议 Multicast Listener Discovery)
N
NCP(网络控制协议 Network Control Protocol)
NNTP (网络新闻传输协议 Network News Transfer Protocol)119
NTP (Network Time Protocol)
P
PPP(点对点协议 Point-to-Point Protocol)
POP(邮局协议 Post Office Protocol)110
R
RARP(逆向地址解析协议 Reverse Address Resolution Protocol)
RIP(路由信息协议 Routing Information Protocol)
S
SLIP(串行链路连接协议Serial Link Internet Protocol)
SNMP(简单网络管理协议 Simple Network Management Protocol)
SMTP (简单邮件传输协议 Simple Mail Transport Protocol)25
SCTP(流控制传输协议 Stream Control Transmission Protocol)
T
TCP(传输控制协议 Transmission Control Protocol)
TFTP(Trivial File Transfer Protocol)
Telnet (远程终端协议 remote terminal protocol)23
U
UDP(用户数据报协议 User Datagram Protocol)
USB 通用串行总线
编辑
网络协议即网络中(包括互联网)传递、管理信息的一些规范。如同人与人之间相互交流是需要遵循一定的规矩一样,计算机之间的相互通信需要共同遵守一定的规则,这些规则就称为网络协议。
一台计算机只有在遵守网络协议的前提下,才能在网络上与其他计算机进行正常的通信。网络协议通常被分为几个层次,每层完成自己单独的功能。通信双方只有在共同的层次间才能相互联系。常见的协议有TCP/IP协议、IPX/SPX协议、NetBEUI协议等。在局域网中用得的比较多的是IPX/SPX.。用户如果访问Internet,则必须在网络协议中添加TCP/IP协议。
TCP/IP详解
编辑
TCP/IP(Transmission Control Protocol/Internet Protocol[2]  ),为传输控制协议/互联网络协议。 TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。TCP/IP是INTERNET的基础协议,也是一种电脑数据打包和寻址的标准方法。在数据传送中,可以形象地理解为有两个信封,TCP和IP就像是信封,要传递的信息被划分成若干段,每一段塞入一个TCP信封,并在该信封面上记录有分段号的信息,再将TCP信封塞入IP大信封,发送上网。在接受端,一个TCP软件包收集信封,抽出数据,按发送前的顺序还原,并加以校验,若发现差错,TCP将会要求重发。因此,TCP/IP在INTERNET中几乎可以无差错地传送数据。 对普通用户来说,并不需要了解网络协议的整个结构,仅需了解IP的地址格式,即可与世界各地进行网络通信
IPX/SPX
IPX/SPX是基于施乐的XEROX’S Network System(XNS)协议,而SPX是基于施乐的XEROX’S SPP(Sequenced Packet Protocol:顺序包协议)协议,它们都是由novell公司开发出来应用于局域网的一种高速协议。它和TCP/IP的一个显著不同就是它不使用ip地址,而是使用网卡的物理地址即(MAC)地址。在实际使用中,它基本不需要什么设置,装上就可以使用了。由于其在网络普及初期发挥了巨大的作用,所以得到了很多厂商的支持,包括microsoft等,到现在很多软件和硬件也均支持这种协议。
NetBEUI
NetBEUI即NetBios Enhanced User Interface ,或NetBios增强用户接口。它是NetBIOS协议的增强版本,曾被许多操作系统采用,例如Windows for Workgroup、Win 9x系列、Windows NT等。NETBEUI协议在许多情形下很有用,是WINDOWS98之前的操作系统的缺省协议。总之NetBEUI协议是一种短小精悍、通信效率高的广播型协议,安装后不需要进行设置,特别适合于在“网络邻居”传送数据。所以建议除了TCP/IP协议之外,局域网的计算机最好也安上NetBEUI协议。另外还有一点要注意,如果一台只装了TCP/IP协议的WINDOWS98机器要想加入到WINNT域,也必须安装NetBEUI协议。
WAPI
WAPI是WLAN Authentication and Privacy Infrastructure的英文缩写。 它像红外线、蓝牙、GPRS、CDMA1X等协议一样,是无线传输协议的一种,只不过跟它们不同的是它是无线局域网(WLAN)中的一种传输协议而已,它与现行的802.11B传输协议比较相近。