springbootjava后端实现okhttp3超时设置(代码片段)

菜菜bu菜 菜菜bu菜     2023-01-13     395

关键词:

SpringBoot Java后端实现okhttp3超时设置

前言

okhttp是一个处理网络请求的开源项目,是安卓端最火热的轻量级框架,由移动支付Square公司开发。OkHttp 是一个默认高效的 HTTP 客户端。OkHttp3是Java和Android都能用,Android还有一个著名网络库叫Volley,那个只有Android能用。

okttp3的github官方地址是:官方地址

  • HTTP/2 支持允许对同一主机的所有请求共享一个套接字。
  • 连接池减少了请求延迟(如果 HTTP/2 不可用)。
  • 透明 GZIP 可缩小下载大小。
  • 响应缓存完全避免网络重复请求。

OkHttp在网络出现问题时坚持:它会从常见的连接问题中默默恢复。如果您的服务有多个 IP 地址,如果第一次连接失败,OkHttp将尝试备用地址。这对于在冗余数据中心托管的 IPv4+IPv6 和服务是必需的。OkHttp 支持现代 TLS 功能(TLS1.3、ALPN、证书锁定)。它可以配置为回退以实现广泛的连接。

使用 OkHttp 很容易。它的请求/响应 API 设计有流畅的构建器和不变性。它支持同步阻塞调用和带有回调的异步调用。

导入

maven

<!-- ok http -->
        <dependency>
            <groupId>com.squareup.okhttp3</groupId>
            <artifactId>okhttp</artifactId>
            <version>4.2.2</version>
        </dependency>

gradle方式

compile 'com.squareup.okhttp3:okhttp:4.2.2'

okhttp3方法简介

一共可以设置5个超时时间分别如下:关于OkHttp的超时时间

OkHttpClient client = new OkHttpClient.Builder()
.connectTimeout(30, TimeUnit.SECONDS)//连接超时(单位:秒)
.callTimeout(120, TimeUnit.SECONDS)//整个流程耗费的超时时间(单位:秒)--很少人使用
.pingInterval(5, TimeUnit.SECONDS)//websocket轮训间隔(单位:秒)
.readTimeout(60, TimeUnit.SECONDS)//读取超时(单位:秒)
.writeTimeout(60, TimeUnit.SECONDS)//写入超时(单位:秒)
.build();
api描述生效机制
callTimeout()整个流程耗费的超时时间AsyncTimeout + WatchDog实现
connectTimeout()三次握手 + SSL建立耗时socket.connect(address, connectTimeout)
readTimeout()source读取耗时\\rawSocket读取耗时source.timeout(readTimeout)AsyncTimeout + WatchDog实现\\rawSocket.setSoTimeout(readTimeout)
writeTimeout()sink写入耗时sink.timeout(writeTimeout)AsyncTimeout + WatchDog实现
pingInterval()websocket轮训间隔(单位:秒)这个值只有http2和webSocket中有使用

两种版本超时设置用法

okhttp3要设置client.Builder

OkHttpClient client = new OkHttpClient.Builder()
         .connectTimeout(15, TimeUnit.SECONDS)
         .readTimeout(15,TimeUnit.SECONDS)
         .writeTimeout(15,TimeUnit.SECONDS)
         .build();

以前的版本设置client


client .connectTimeout(15, TimeUnit.SECONDS)
          .readTimeout(15,TimeUnit.SECONDS)
          .writeTimeout(15,TimeUnit.SECONDS)

springbootjava优雅地实现接口数据校验(代码片段)

在工作中写过Java程序的朋友都知道,目前使用Java开发服务最主流的方式就是通过SpringMVC定义一个Controller层接口,并将接口请求或返回参数分别定义在一个Java实体类中,这样SpringMVC在接收到Http请求(POST/GET)后,就... 查看详情

okhttp3实现post方式上传文件加参数(代码片段)

...上传。我使用的okhttp版本:implementation'com.squareup.okhttp3:okhttp:3.10.0'实现代码://初始化OkHttpClientOkHttpClientclient=newO 查看详情

android网络实战篇——okhttp3(retrofit2)五种缓存模式的实现

参考技术A网上有许多写OKhttp3缓存的文章,例如:【Okhttp3结合Retrofit2实现缓存】https://www.jianshu.com/p/74d2c10c3eba?from=timeline【使用Retrofit和Okhttp3实现网络缓存】https://www.jianshu.com/p/34f73e571ecb【okhttp3缓存实践】http://blog.csdn.net/wuhengde/ar... 查看详情

使用 OkHttp3 和 ReactiveX Java 实现长轮询的正确方法

】使用OkHttp3和ReactiveXJava实现长轮询的正确方法【英文标题】:CorrectwaytoimplementlongpollingusingOkHttp3andReactiveXJava【发布时间】:2021-01-1912:49:30【问题描述】:如何使用OkHttp3(v4.4.1)实现长轮询,以获取响应的每一行的RxJava(v2.2.11)Observa... 查看详情

java封装okhttp3工具类(代码片段)

Java封装OkHttp3工具类,适用于Java后端开发者说实在话,用过挺多网络请求工具,有过java原生的,HttpClient3和4,但是个人感觉用了OkHttp3之后,之前的那些完全不想再用了。怎么说呢,代码轻便,使用... 查看详情

Okhttp3:使用 HeaderInterceptor 需要帮助

】Okhttp3:使用HeaderInterceptor需要帮助【英文标题】:Okhttp3:NeedhelptouseHeaderInterceptor【发布时间】:2020-08-2600:07:18【问题描述】:我想为我的所有请求使用全局标头。因此我实现了以下类:publicclassHeaderInterceptorpublicResponseintercept(Cha... 查看详情

优雅设计封装基于okhttp3的网络框架:httpheader接口设计实现及responserequest封装实现(代码片段)

到目前为止,多线程下载功能设计、编写、优化工作已经完成,但是网络框架编写工作并没有完成,此篇将完成Http核心架构,编写的新功能还是围绕在http请求上,涉及到的知识点:httpHeader的接口定义和实... 查看详情

采用okhttp3框架查询小车余额(代码片段)

...卓应用(二)授权访问因特网(三)添加okhttp3依赖(四)主布局资源文件(五)字符串资源文件(六)主界面类实现功能(七)运行程序,测试查询三、课 查看详情

java封装okhttp3工具类,真tm厉害!

...资料+视频作者:如漩涡https://blog.csdn.net/mJava封装OkHttp3工具类,适用于Java后端开发者说实在话,用过挺多网络请求工具,有过java原生的,HttpCl 查看详情

Okhttp3:将全局标头添加到所有请求错误

】Okhttp3:将全局标头添加到所有请求错误【英文标题】:Okhttp3:Addglobalheadertoallrequestserror【发布时间】:2020-08-2508:06:42【问题描述】:我想为我的所有请求定义一个全局标头。我正在使用okhttp3。我在论坛里搜索了这里,找到了... 查看详情

okhttp3(代码片段)

浅析okHttp3的网络请求流程okHttp目前可以称的上是Android主流网络框架,甚至连谷歌官方也将网络请求的实现替换成okHttp.网上也有很多人对okHttp的源码进行了分析,不过基于每个人的分析思路都不尽相同,读者看起来的收获也各不相同... 查看详情

springbootjava多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入(代码片段)

SpringbootJava多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入1、读写锁2、文件锁3、Synchronized和Lock的区别1、读写锁在SpringBoot中进行多线程操作本地文件并加读写锁可以使用Java的java.nio.fi... 查看详情

springbootjava调用海康威视sdk打包成jar后无法引用dll的问题

方案1:打jar包前,HCNetSDK.java、PlayCtrl.java文件中:INSTANCE需要用绝对路径如图如果要打成jar包,需要在pom文件中配置,否则无法引用lib里的两个外部包  其它方案:1、应该还可以配置到环境变量,有空再试试2、貌似也可... 查看详情

android登录注册功能加密处理(代码片段)

《Android使用OKhttp3实现登录注册功能+springboot搭建后端》这篇教程介绍了登录注册的流程及基本实现。但是有一些小问题。就是后端处理的时候,URL将用户名密码使用明文加密。这样抓包就很容易获取隐私数据。这篇完善... 查看详情

使用okHttp3上传动态文件数

】使用okHttp3上传动态文件数【英文标题】:UploaddynamicnumberoffileswithokHttp3【发布时间】:2016-04-2801:51:00【问题描述】:如何使用OkHttpv3管理动态文件数的上传,我已经使用旧版本的OkHttp实现了compile\'com.squareup.okhttp:okhttp:2.6.0\'Form类... 查看详情

CORS 阻止了我的后端服务器,如何解决?使用 Springboot java 作为后端, react js 作为我的前端

】CORS阻止了我的后端服务器,如何解决?使用Springbootjava作为后端,reactjs作为我的前端【英文标题】:CORSblockingmybackendserver,howtofix?UsingSpringbootjavaasbackendandreactjsasmyfrontend【发布时间】:2020-02-0701:17:48【问题描述】:importReact,Compo... 查看详情

Okhttp3 with consrypt for http2 support in jdk8

】Okhttp3withconsryptforhttp2supportinjdk8【英文标题】:【发布时间】:2019-07-0820:18:29【问题描述】:我一直在围绕okhttp3进行http2请求的测试,我的标准是使用jdk8本身实现http2连接。我知道这可以通过升级到jdk9或使用conscrypt作为默认提... 查看详情

微信app支付-android+springboot搭建后端(代码片段)

...赖app/build.gradle在app/build.gradle下加入微信支付的依赖以及okhttp3。implementation'com.tencent.mm.opensdk:wechat-sdk-android:+'//微信支付implementation'com.squareup.okhttp3:okhttp:3.14.7'3、AndroidManifest.xml添加微信支付的权限<!--微信支付权... 查看详情