HTTP是现代应用常用的一种交换数据和媒体的网络方式,高效地使用HTTP能让资源加载更快,节省带宽。OkHttp是一个高效的HTTP客户端,它有以下默认特性:

支持HTTP/2,允许所有同一个主机地址的请求共享同一个socket连接

连接池减少请求延时

透明的GZIP压缩减少响应数据的大小

缓存响应内容,避免一些完全重复的请求

当网络出现问题的时候OkHttp依然坚守自己的职责,它会自动恢复一般的连接问题,如果你的服务有多个IP地址,当第一个IP请求失败时,OkHttp会交替尝试你配置的其他IP,OkHttp使用现代TLS技术(SNI, ALPN)初始化新的连接,当握手失败时会回退到TLS 1.0。

官网原文:

HTTP is the way modern applications network. It’s how we exchange data & media. Doing HTTP efficiently makes your stuff load faster and saves bandwidth.

OkHttp is an HTTP client that’s efficient by default:

HTTP/2 support allows all requests to the same host to share a socket.

Connection pooling reduces request latency (if HTTP/2 isn’t available).

Transparent GZIP shrinks download sizes.

Response caching avoids the network completely for repeat requests.

OkHttp perseveres when the network is troublesome: it will silently recover from common connection problems. If your service has multiple IP addresses OkHttp will attempt alternate addresses if the first connect fails. This is necessary for IPv4+IPv6 and for services hosted in redundant data centers. OkHttp initiates new connections with modern TLS features (SNI, ALPN), and falls back to TLS 1.0 if the handshake fails.

Android 演变:

下载

Gradle1implementation("com.squareup.okhttp3:okhttp:version code")

示例:

1implementation("com.squareup.okhttp3:okhttp:3.12.1")

不建议使用”+”或者latest.release代替版本号,最新的未必是最好的

jar

GET 方法1

2

3

4

5

6

7

8

9

10

11OkHttpClient client = new OkHttpClient();

String run(String url) throws IOException{

Request request = new Request.Builder()

.url(url)

.build();

try (Response response = client.newCall(request).execute()) {

return response.body().string();

}

}

POST 方法1

2

3

4

5

6

7

8

9

10

11

12

13

14public static final MediaType JSON = MediaType.get("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

String post(String url, String json) throws IOException{

RequestBody body = RequestBody.create(JSON, json);

Request request = new Request.Builder()

.url(url)

.post(body)

.build();

try (Response response = client.newCall(request).execute()) {

return response.body().string();

}

}

以上两个demo来自OkHttp官网op1=>operation: Android2.3之前基于HttpClient

op2=>operation: Android2.3之后基于HttpURLConnection

op3=>operation: Android4.4之后基于okhttp

op4=>operation: Android6.0移除org.apache.http.*只保留了个别类

op1->op2->op3->op4{"scale":1,"line-width":2,"line-length":50,"text-margin":10,"font-size":12}

添加okhttp+android+studio,OKHTTP3 简单使用(一) 介绍及Android Studio集成相关推荐

  1. 做简单的android 软件推荐,Android_适用于Android开发的简单聊天软件,适用于android 开发。是一个简 - phpStudy...

    适用于Android开发的简单聊天软件 适用于android 开发.是一个简单的聊天软件,包括知识点,各个控件的运用(ExpandableListView,ViewPager,Spinner,Line ...

  2. 基于android的理财软件技术专业介绍,基于Android系统的个人理财软件的设计与实现...

    摘要: 经济社会中,对于人们来说"理财"一词已不再陌生.人们日新月异的生活,用于社会往来,娱乐休闲和改善住房环境的财务支出增多.做好详细收支计划,能良好的管理个人,家庭的经济收支情 ...

  3. Android Material Design简单使用 http://www.cnblogs.com/android-blogs/p/5632103.html

    Android Material Design简单使用 吐槽 作为一个 Android developer,没有什么比拿着 UI 设计的一堆 iOS 风格的设计 来做需求更恶心的了,基本所有空间都要照 ...

  4. android的timertask,Android TimerTask 的简单应用及注意事项

    Android  TimerTask 的简单应用及注意事项 Android应用开发中常常会用到定时器,不可避免的需要用到 TimerTask 定时器任务这个类 下面简单的一个示例演示了如何使用Time ...

  5. 安卓Android ViewModel 超简单实例

    安卓Android ViewModel 超简单实例 文章目录 安卓Android ViewModel 超简单实例 前言 使用步骤 1.引入库 2.继承ViewModel 并定义一个对象 3.到处去用 ...

  6. 可能是最详细的Android图片压缩原理分析(一)—— Android图片压缩必备基础知识

    本篇文章已授权微信公众号guolin_blog(郭霖)独家发布 稀土掘金链接 前言: 最近在研究图片压缩原理,看了大量资料,从上层尺寸压缩.质量压缩原理到下层的哈夫曼压缩,走成华大道,然后去二仙桥,全 ...

  7. Android Studio实现简单的健身系统,一起锻炼身体吧

    文章目录 一.系统背景 二.系统概述 三.开发环境 四.系统结构 五.详细设计 5.1.RecycleView 5.2.ViewPager 5.3.OkHttp 六.运行演示 七.系统总结 八.源码获 ...

  8. 使用Android Studio实现简单的计算器(已亲自实验通过)

    使用Android Studio实现简单的计算器(已亲自实验通过) 实验内容 用多个Activity实现分别实现加.减.乘.除的计算器,具体包括:通过一个启动Activity布置4个按钮,每个按钮分别 ...

  9. Android实现有声计算器代码,android studio实现简单的计算器(无bug)

    本文实例为大家分享了android studio实现简单计算器的具体代码,供大家参考,具体内容如下 1.效果图 2布局代码 3.逻辑代码 package com.example.myzhuoye; i ...

最新文章

  1. canvas三角函数模拟水波效果
  2. MethodTrace 生成的trace文件为空
  3. 【集合论】二元关系 ( 定义域 | 值域 | 域 | 逆运算 | 逆序合成运算 | 限制 | 像 | 单根 | 单值 | 合成运算的性质 )
  4. win11 wsl centos7换源aliyun阿里云命令记录
  5. LiteIDE 在 Windows 下为 Go 语言添加智能提示代码补全
  6. TensorFlow学习笔记(二十八)CNN的9大模型之AlexNet
  7. scrapy---Logging
  8. Github pull request 工作流总结
  9. JAVA对接支付宝支付(超详细,一看就懂)
  10. linux stat命令详解
  11. 分布式服务框架gRPC
  12. mybatis mysql 存储过程传入对象_mybatis 调用mysql存储过程 带输出输入参数
  13. Android开发技巧:给Button的点击上色
  14. hadoop包含哪些技术?
  15. Strace诊断CPU跑高问题(java/php网站)
  16. redhat 完全卸载mysql_Linux完全卸载MySQL
  17. vue创建项目自定义配置
  18. 学位真的那么重要吗?上交大博士亲述科研心路,获4万高赞,网友:这是知乎最好的回答...
  19. Phyton学习笔记
  20. 线段树维护区间最大子段和 枚举 HDU6638

热门文章

  1. 十分钟学会 xmind 思维导图的使用
  2. ubuntu20.04 镜像下载
  3. winpcap 查询 活动网卡_社保卡20周年惠民服务季之腾讯活动:社会保障卡的20年...
  4. c4d-NURBS建模-5
  5. OpenCV系列之改变颜色空间 | 十三
  6. 9.26~9.27小结
  7. [技巧分享-打印机设置]在局域网内设置共享打印机
  8. 查看moka状态码(小米、蔚来等公司)
  9. 烤仔观察 | FC(1):共识星河里最亮的星
  10. 物流信息管理php,物流信息管理平台设计与实现PHP1012(毕业设计+论文)