改造第一个请求需要精确的OkHttpClient超时

问题描述 投票:2回答:2

我正在使用Retrofit和OkHttpClient在Android上构建Rest API。

前段时间,我注意到api提出的第一个请求总是比其他所有人都要花费更长的时间......开始时我并不关心因为这是一个可以接受的时间。

但是突然间请求时间跳到了60秒

所有这些都是浪费客户端,因为监控服务器我发现处理时间不到1秒......

我想知道我做了什么改变会导致如此高的影响,然后我意识到我改变了OkHttp的连接超时。

我已经将测试值从10秒改为60秒......

我做了一些实验,将connectTimeout设置为许多其他值,并且总是第一个请求在超时时间内高于时间

有谁知道什么可能导致这种奇怪的行为?怎么解决?

PS。我需要在桌面上测试api并且这个问题没有发生,我的意思是它只发生在Android设备上[我试过几个]是什么原因?

android retrofit2 connection-pooling okhttp okhttp3
2个回答
0
投票

您可以在EventListener中配置OkHttpClient并使用它来查看时间花费。


0
投票

https://medium.com/inloopx/okhttp-is-quietly-retrying-requests-is-your-api-ready-19489ef35ace

它可能在前几个请求和超时时失败。 OkHTTP会自动重试。

builder.retryOnConnectionFailure(假);

尝试关闭自动重试,看看会发生什么。

https://www.reddit.com/r/gfycat/comments/5y2dkm/psa_for_android_devs_how_to_work_around_ipv6/

这可能是ipv4 vs ipv6问题。此代码优先考虑ipv4地址。

© www.soinside.com 2019 - 2024. All rights reserved.