当前位置: 首页 > news >正文

关于OkHttp–支持SPDY协议的高效HTTP库 com.squareup.okhttp

转载:http://liuzhichao.com/p/1707.html

OkHttp–支持SPDY协议的高效HTTP库

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; (

相关文章:

  • tomcat发布web service教程
  • Scala学习 - 基础类型
  • Skype for Business Server 2015-02-Office Web Apps-部署
  • Skype for Business Server 2015-03-后端服务器-3-验证
  • VNC服务安装配置
  • 设计模式C++实现(12)——备忘录模式
  • itunes connect 沙盒帐号地区的问题导致无法进行充值
  • Spark streaming的执行流程
  • tpcc-mysql 系列一:安装使用
  • 一个动画 Label (走马观花)
  • 携程网瘫痪超8小时,可能故障原因分析
  • phpcms v9修改栏目描述的多行文本为编辑器方法
  • 黎活明给程序员的忠告(转)
  • C# 添加.DLL 出错的解决方法
  • HihoCoder第十周:后序遍历
  • 【Leetcode】101. 对称二叉树
  • 【RocksDB】TransactionDB源码分析
  • CSS 三角实现
  • ES6 学习笔记(一)let,const和解构赋值
  • LeetCode29.两数相除 JavaScript
  • Spark学习笔记之相关记录
  • SpiderData 2019年2月13日 DApp数据排行榜
  • Spring Cloud中负载均衡器概览
  • Spring声明式事务管理之一:五大属性分析
  • vue-cli3搭建项目
  • 订阅Forge Viewer所有的事件
  • 多线程事务回滚
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 软件开发学习的5大技巧,你知道吗?
  • 三分钟教你同步 Visual Studio Code 设置
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 怎么将电脑中的声音录制成WAV格式
  • python最赚钱的4个方向,你最心动的是哪个?
  • $ git push -u origin master 推送到远程库出错
  • (1)Android开发优化---------UI优化
  • (3)STL算法之搜索
  • (7)STL算法之交换赋值
  • (el-Date-Picker)操作(不使用 ts):Element-plus 中 DatePicker 组件的使用及输出想要日期格式需求的解决过程
  • (Java实习生)每日10道面试题打卡——JavaWeb篇
  • (M)unity2D敌人的创建、人物属性设置,遇敌掉血
  • (STM32笔记)九、RCC时钟树与时钟 第一部分
  • (附源码)springboot美食分享系统 毕业设计 612231
  • (三) diretfbrc详解
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .bat批处理(二):%0 %1——给批处理脚本传递参数
  • .NET 8 中引入新的 IHostedLifecycleService 接口 实现定时任务
  • .Net实现SCrypt Hash加密
  • .NET委托:一个关于C#的睡前故事
  • @Conditional注解详解
  • @LoadBalanced 和 @RefreshScope 同时使用,负载均衡失效分析
  • @staticmethod和@classmethod的作用与区别
  • [@Controller]4 详解@ModelAttribute
  • [ajaxupload] - 上传文件同时附件参数值
  • [BZOJ1040][P2607][ZJOI2008]骑士[树形DP+基环树]
  • [C#]winform部署PaddleOCRV3推理模型