gpt4 book ai didi

android - Okhttp 总是重试失败的连接

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:08:01 53 4
gpt4 key购买 nike

如果我创建一个请求并且该请求返回一个 4xx 错误,Retrofit/Okhttp 会不断重试该请求。我已将 retryOnConnectionFailure 设置为 false 并将超时设置为 15 秒,但这一切似乎都被忽略了。我错过了什么吗?

private static OkHttpClient getClient() {
return new OkHttpClient.Builder()
.addNetworkInterceptor(new HttpLoggingInterceptor().setLevel(BuildConfig.DEBUG ? HttpLoggingInterceptor.Level.BODY : HttpLoggingInterceptor.Level.NONE))
.readTimeout(15, TimeUnit.SECONDS)
.connectTimeout(15, TimeUnit.SECONDS)
.retryOnConnectionFailure(false)
.addInterceptor(chain -> {
Request request = chain.request()
.newBuilder()
.build();

return chain.proceed(request);
}).build();
}

public static Retrofit getRetrofitClient(Gson gson){
Retrofit.Builder builder = new Retrofit.Builder()
.baseUrl(baseUrl)
.client(OkHttpLogger.getClient());
if(gson != null){
builder.addConverterFactory(GsonConverterFactory.create(gson));
}else{
builder.addConverterFactory(GsonConverterFactory.create());
}

return builder.build();
}

我正在使用改造 2.3.0 和 okhttp 版本 3.8.1

编辑

我确实看到的一件事是,如果我将超时设置为 5 秒,它会完美运行,不断重试 5 秒,然后给我一个失败,但如果我将它提高到 10 秒,它就会继续运行,最后在 2 分钟左右停止.

最佳答案

问题是 retryOnConnectionFailure 不适用于 408 响应,因此它仍会自动重试这些响应

关于android - Okhttp 总是重试失败的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44979335/

53 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com