当前位置: 首页 > 知识库问答 >
问题:

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

孙修贤
2023-03-14

我正在使用Reformation和OkHttpClient在Android上构建RESTAPI。

不久前,我注意到api提出的第一个请求总是比其他所有请求需要更长的时间来处理...一开始我不在乎,因为这是一个可以接受的时间。

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

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

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

我将值从10秒更改为60秒只是为了测试。。。

我做了一些实验,将connectTimeout设置为许多其他值,并且第一个请求的时间总是比超时时间长很多

有人知道是什么可能导致这种奇怪的行为吗?如何解决它?

附言。我需要在桌面上测试api,但这个问题没有发生,我的意思是它只发生在android设备上[我尝试了几个]原因是什么?

共有2个答案

吕向阳
2023-03-14

您可以在您的OkHttpClient中配置一个事件监听器,并使用它来查看时间是如何花费的。

卜凯旋
2023-03-14

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

它可能会在最初的几个请求上失败并超时。OkHTTP正在自动重试。

建设者retryOnConnectionFailure(假);

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

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

这可能是ipv4与ipv6之间的问题。此代码优先考虑ipv4地址。

 类似资料:
  • 我有一个API,它返回一个限制为100个实体的实体列表。如果有更多实体,它将为下一页返回一个标记。 我想创建一个返回所有实体(所有页面)的通量,但仅在需要时(如果要求)。 我编写了以下代码: 而且几乎成功了 如果我请求99个元素,则加载第一页,我的流量包含99个元素。 如果我请求150个元素,则加载第一页和第二页,并且我的流量包含150个元素。 但是,如果我请求100个元素,则会加载第一页和第二页

  • 我正在使用OkHttpClient向网站的网页url发送请求,并通过以下方法存储它提供的cookie,我仅从stackoverflow获得该方法。 有必要存储cookie,否则网站会将请求重定向到超时页面。 然后,我看到页面的html来检查我是否到达了正确的网址。 现在,我以类似于网址“www.example.com/loginPage”的方式制作另一个请求变量,并尝试查看html,但它将我重定向

  • 这是我用于网络调用的函数。 接口类 收到400个错误请求。 错误日志 任何帮助都将不胜感激。

  • 我想申请以下权限:。根据这个答案,我是这样申请权限的: 问题是我的应用程序只请求存储权限没有别的。 和是未请求或授予的权限。我如何按顺序询问所有权限? 以下是未授予和权限的证明:

  • 问题内容: 我有一个javascript函数,其中有两个$ .post请求。两个$ .post请求都应该执行。但是有时候,第二个$ .post请求却没有执行。这可能是什么原因? 问题答案: 是$ .ajax()结构的缩写形式。我通常更喜欢使用该结构,因为: 比较容易发现我是否错过了任何事情 我可以更轻松地添加其他参数,例如 当刚接触ajax时,我发现对这种结构进行故障排除要容易得多 在您的情况下,