我进行了自定义 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 中发出的相同请求可以毫无问题地完成。
我们也出现过类似的问题,原来是使用合格域名时与DNS解析有关。
如果您向具有合格域名的服务器发出请求,则 DNS 解析可能会导致超时,从而返回 502 错误代码。在我们的案例中,当我们发现充当代理的 DNS 的超时设置为 30 秒时,问题就得到了解决。
您可能需要检查您的 API 请求中是否使用了合格的域名,如果是,请考虑增加 DNS 服务器的超时。当我们尝试通过 IP 地址而不是域到达端点时,我们发现了问题,并且成功了。
这为我们解决了问题,并解决了在按预期开始工作之前超时的请求。