Android为我们提供了两种HTTP交互的方式: HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连接池,已足够满足我们各种HTTP请求的需求。但更高效的使用HTTP可以让您的应用运行更快、更节省流量。而OkHttp库就是为此而生。

OkHttp是一个高效的HTTP库:

  • 支持 SPDY ,共享同一个Socket来处理同一个服务器的所有请求
  • 如果SPDY不可用,则通过连接池来减少请求延时
  • 无缝的支持GZIP来减少数据流量
  • 缓存响应数据来减少重复的网络请求

会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP。OkHttp还处理了代理服务器问题和SSL握手失败问题。

使用 OkHttp 无需重写您程序中的网络代码。OkHttp实现了几乎和java.net.HttpURLConnection一样的API。如果您用了 Apache HttpClient,则OkHttp也提供了一个对应的okhttp-apache 模块。

Examples

下面的示例请求一个URL并答应出返回内容字符.

package com.squareup.okhttp.guide; import com.squareup.okhttp.OkHttpClient; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.URL; public class GetExample { OkHttpClient client = new OkHttpClient(); void run() throws IOException { String result = get(new URL("https://raw.github.com/square/okhttp/master/README.md")); System.out.println(result); } String get(URL url) throws IOException { HttpURLConnection connection = client.open(url); InputStream in = null; try { // Read the response. in = connection.getInputStream(); byte[] response = readFully(in); return new String(response, "UTF-8"); } finally { if (in != null) in.close(); } } byte[] readFully(InputStream in) throws IOException { ByteArrayOutputStream out = new ByteArrayOutputStream(); byte[] buffer = new byte[1024]; for (int count

转载于:https://www.cnblogs.com/Free-Thinker/p/4349654.html

OkHttp–支持SPDY协议的高效HTTP库相关推荐

  1. 使用支持SPDY协议的Wireshark截包(含spdyshark插件)

    因为SPDY基于SSL/TLS,所以要分析出SPDY包,就需要能解密TLS,就得有SPDY服务器的私钥.所以只能分析自己搭的服务器的包. 本文基于前三篇文章,请先阅读: Linux Mint + Ap ...

  2. HTTP代理与SPDY协议(转)

    原文出处: fqrouter HTTP代理是最经典最常见的代理协议.其用途非常广泛,普遍见于公司内网环境,一般员工都需要给浏览器配置一个HTTP代理才能访问互联网.起初,HTTP代理也用来翻越&quo ...

  3. android4.4 ssl版本查看,OkHttp在4.4及以下不支持TLS协议的解决方法

    在做超理论坛app的过程中,遇到许多用户反馈在他们的手机上客户端不能访问网络,我问了他们的手机型号和Android系统版本,全部是5.0以下的,之后我自己运行API19(4.4)的Android模拟器 ...

  4. 从OkHttp引入Cronet支持quic协议

    HTTP/3在HTTP/2的基础上,增强了安全上的限制,且使用UDP传输降低丢包导致的头部阻塞.降低因为TCP的协议限制而导致的连接耗时高等问题,但是目前各大浏览器的支持范围不够广,暂时不建议在网页相 ...

  5. Git 2.18版本发布:支持Git协议v2,提升性能

    2019独角兽企业重金招聘Python工程师标准>>> Git 2.18版本发布:支持Git协议v2,提升性能Git 2.18版本发布:支持Git协议v2,提升性能 新版本协议的主要 ...

  6. 源码编译更新nginx到最新版本,并开始nginx支持http2协议模块.

    最近因为迁移公司vm上的代码,遇到一些问题.有一台vm配置了https协议,原以为迁移安全证书以后,配置nginx就可以了,但是修改nginx配置文件以后,执行 nginx -t 命令后,报如下错误: ...

  7. Google spdy协议

    前言 学习okhttp过程中,附带很多知识点一并了解.这篇属于okhttp默认支持协议栈的一种.当然不仅限于spdy,还有http/2 http等 看效果: 左边是普通 HTTPS 加载,右边是 SP ...

  8. git支持的协议大全

    1git协议 git可以使用四种主要的协议来传输资料:本地协议.HTTP协议.SSH协议以及Git协议.在此,将讨论不同协议的使用场景. 1.1本地协议 1.1.1基本知识 最基本的就是 本地协议(L ...

  9. Dubbo支持的协议

    注册中心做好了,那是先有provider还是先有consumer,肯定是provider,然后这里面我们知道,这些东西都可以单独的安装在不同的计算机中,他们之间通信的时候都是通过什么进行通信的,他们之 ...

  10. 阿里云全站加速DCDN全面支持WebSocket协议

    WebSocket协议可以为网站和应用提供真正的双向通信,具有控制开销.保持连接状态.更强实时性.更好的压缩效果等优点,是当下低延时应用最常采用的一种技术协议.为了更好的满足客户在实时通讯场景下的加速 ...

最新文章

  1. 剑指offer_第5题_用两个栈实现队列
  2. 使用Query Object 模式 基于jpql实例
  3. python 在python的class中的,self到底是什么?
  4. java 实体类arraylist_如何实现Java的ArrayList经典实体类
  5. boost::multiprecision模块mpfi相关的测试程序
  6. 深入讲解JSP 2.0下的动态内容缓存技术
  7. [Kaggle] Digit Recognizer 手写数字识别(神经网络)
  8. Qt文件编码转换工具(三) Qt界面设计
  9. 20165237 2017-2018-2 《Java程序设计》第1周学习总结
  10. VMware Workstation安装虚拟机失败
  11. MySQL(7) ---删除数据库
  12. C#开发WPF/Silverlight动画及游戏系列教程(Game Tutorial):(五十) 终章!新的曙光!...
  13. Android WebView开发(三):WebView性能优化
  14. matlab如何进行四维拟合,matlab四维插值拟合
  15. 图文安装VMware Workstation教程
  16. 互联网时代运维价值的重塑
  17. 写在2020.11.19 周四晚上
  18. Arcface中的IR_SE模块
  19. T三说茶丨教你分辨头采茶、头春茶、明前茶、雨前茶!
  20. pg中 on conflict 使用与爬坑

热门文章

  1. Puppet常用资源使用详解
  2. 一年工作经验的java面试题
  3. mysql基础知识理解和sql题讲解分析面试实战(四)之函数讲解和字符串的操作...
  4. Android 教你打造炫酷的ViewPagerIndicator
  5. Mac OS 下安装wget
  6. ARM中的RO、RW和ZI DATA说明
  7. 文/有品生活(pinpinlife) 小户型家具如何摆?
  8. numpy.reshape
  9. Hibernate学习笔记:数据库连接的配置
  10. c# 执行js方法