美文网首页
okHttp 更改请求的超时时间

okHttp 更改请求的超时时间

作者: 远在远方的风yzyfdf | 来源:发表于2022-10-25 14:58 被阅读0次

以单例的形式使用 OKhttp,全局已经设置了超时时间

builder.connectTimeout(5, TimeUnit.SECONDS)
  .readTimeout(5, TimeUnit.SECONDS)
  .writeTimeout(5, TimeUnit.SECONDS)

某个接口(比如上传图片)需要不同的超时时间,怎么设置?

1、添加一个自定义注解

@Retention
@Target(allowedTargets = [AnnotationTarget.FUNCTION])
annotation class SpecificTimeout(val duration: Int, val unit: TimeUnit)

2、在方法上使用注解

@POST("/xxxx/xxxx/xxxx")
@SpecificTimeout(45, TimeUnit.SECONDS)
suspend fun payBOC(@Body payBOC: PayBOC): BaseBean<PayBOCResp>

3、自定义拦截器

class TimeOutInterceptor : Interceptor {
    override fun intercept(chain: Interceptor.Chain): Response {
        val request = chain.request()
        //有些方法需要不一样的超时时间
        request.tag(Invocation::class.java)
            ?.method()
            ?.getAnnotation(SpecificTimeout::class.java)
            ?.let {
                return chain.withConnectTimeout(it.duration, it.unit)
                    .withReadTimeout(it.duration, it.unit)
                    .withWriteTimeout(it.duration, it.unit)
                    .proceed(request)
            } ?: kotlin.run {
            return chain.proceed(request)
        }
    }
}

4、加上拦截器

builder.addInterceptor(TimeOutInterceptor())
  .connectTimeout(5, TimeUnit.SECONDS)
  .readTimeout(5, TimeUnit.SECONDS)
  .writeTimeout(5, TimeUnit.SECONDS)

相关文章

  • okhttp请求超时无效问题

    OKHttp请求超时无效问题 Okhttp在网络请示出现错误时会重新发送请求,最终会不断执行 解决方式:retry...

  • 使用Retrofit2进行HTTP请求设置请求超时

    采用Retrofit2本身可以进行优雅的RESTFul请求,但是无法设置请求超时时间,需要配合okhttp3来设置...

  • 了解OKHttp线程池实现原理

    1、在OKHttp中需要一个队列来保存不同的请求 2、在每次请求前从线程池里检查是否有超时的连接,将超时的连接从线...

  • 搞定 Android OkHttp3 网络请求

    1 开始使用 https://github.com/square/okhttp 默认客户端 设置请求超时 设置缓存...

  • 请求超时

    请求超时分两种:前端超时,服务端超时1.服务端超时:当请求到服务端默认超时时间还是无响应,服务端会自动断开请求2....

  • AFNetworking设置请求网络超时

    有时候可能请求某个服务器接口很慢会导致请求超时,所以需改变默认的请求超时时间。

  • okhttp网络框架源码浅析(一)

    okhttp使用 app下gradle文件中引入okhttp okhttp同步请求 以上即为okhttp请求网络的...

  • win+r cmd ping 请求超时 请求超时 请求超时 请求超时 数据包 已发送 =4 已接受 =0 丢...

  • 2018-08-22 异步httpclient(httpasyn

    connectTimeOut:连接超时,连接建立时间,三次握手完成时间; socketTimeOut: 请求超时,...

  • OkHttp源码学习记录(请求网络)

    本篇文章通过源码了解OkHttp的请求网络流程,先来学习OkHttp的请求网络流程。 OkHttp的请求网络流程 ...

网友评论

      本文标题:okHttp 更改请求的超时时间

      本文链接:https://www.haomeiwen.com/subject/hwiazrtx.html