Retrofit / okHttpClient 无论如何将超时限制为 10 秒

问题描述 投票:0回答:1

我进行了自定义 OkHttpClient 设置,但我的应用程序仍然无法在请求中等待超过 10 秒,然后超时并显示 502 错误代码。

    OkHttpClient okHttpClient = new OkHttpClient.Builder()
            .connectTimeout(30, TimeUnit.SECONDS)
            .readTimeout(30, TimeUnit.SECONDS)
            .writeTimeout(30, TimeUnit.SECONDS)
            .callTimeout(30, TimeUnit.SECONDS)
            .build();

    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(url)
            .client(okHttpClient)
            .addConverterFactory(GsonConverterFactory.create())
            .build();

可能发生什么仍然限制我的超时?

我尝试更改我的服务器后端设置,但看起来问题直接出在我的应用程序中,看起来超时不会超过 10 秒,因为在 Postman 中发出的相同请求可以毫无问题地完成。

android timeout retrofit okhttp http-status-code-502
1个回答
0
投票

我们也出现过类似的问题,原来是使用合格域名时与DNS解析有关。

如果您向具有合格域名的服务器发出请求,则 DNS 解析可能会导致超时,从而返回 502 错误代码。在我们的案例中,当我们发现充当代理的 DNS 的超时设置为 30 秒时,问题就得到了解决。

您可能需要检查您的 API 请求中是否使用了合格的域名,如果是,请考虑增加 DNS 服务器的超时。当我们尝试通过 IP 地址而不是域到达端点时,我们发现了问题,并且成功了。

这为我们解决了问题,并解决了在按预期开始工作之前超时的请求。

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