我正在使用 OkHttp 并希望禁用特定 api 调用的连接重试。这是正确的方法吗?:
mMyGlobalClient = new OkHttpClient();
....
public void makeConnection(...) {
OkHttpClient client = null;
if (disableRetries) {
OkHttpClient clone = mMyGlobalClient.clone();
clone.setRetryOnConnectionFailure(false);
client = clone;
} else {
client = mMyGlobalClient;
}
client.newCall(...);
}
Run Code Online (Sandbox Code Playgroud)
这个想法来自这篇文章:
https://github.com/square/okhttp/pull/1259#issue-53157152
大多数应用程序不想全局禁用重试。相反,使用 clone() 为特定的非幂等请求获取 OkHttpClient,然后使用设置配置该客户端。
我想为这个调用禁用重试的原因是,如果它被我的服务器处理两次,它可能具有破坏性:
https://github.com/square/okhttp/pull/1259#issuecomment-68430264
谢谢
是的,这是正确的方法。
顺便说一句,如果你不介意,你可以写得简单一点
mMyGlobalClient = new OkHttpClient();
....
public void makeConnection(...) {
OkHttpClient client = null;
if (disableRetries) {
client = mMyGlobalClient.clone();
client.setRetryOnConnectionFailure(false);
} else {
client = mMyGlobalClient;
}
client.newCall(...);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5673 次 |
| 最近记录: |