OkHttp3 是否默认自动重试 POST 请求
Does OkHttp3 auto retry POST request by default
关注的是账单系统。
当客户端(Android或PC)使用okhttp3
发送POST
或PUT
请求时,话单服务器可能会收到请求并插入话单记录在数据库中,但会在很长一段时间内做出响应,因此客户端无法收到有效(及时)的响应。重点是在这种情况下,okhttp3
会重新发送请求吗?
这很重要,因为如果重试,数据库中会出现重复的记录,而不会比较旧的账单记录。
我对此表示怀疑的原因是 OkHttpClient.Builder
有一个名为 retryOnConnectionFailure
的方法,这将如何影响 post 请求行为?由于方法名称是关于连接的。
关于 HttpURLConnection
的重试行为也是同样的问题。
在github中参考这个问题#2394。似乎 okhttp
3.2 确实有这个重试问题。在 3.3 版本中,此行为更改为
如果我们在发送请求后遇到读取超时,请不要恢复,但如果我们遇到建立连接超时,请恢复。
关注的是账单系统。
当客户端(Android或PC)使用okhttp3
发送POST
或PUT
请求时,话单服务器可能会收到请求并插入话单记录在数据库中,但会在很长一段时间内做出响应,因此客户端无法收到有效(及时)的响应。重点是在这种情况下,okhttp3
会重新发送请求吗?
这很重要,因为如果重试,数据库中会出现重复的记录,而不会比较旧的账单记录。
我对此表示怀疑的原因是 OkHttpClient.Builder
有一个名为 retryOnConnectionFailure
的方法,这将如何影响 post 请求行为?由于方法名称是关于连接的。
关于 HttpURLConnection
的重试行为也是同样的问题。
在github中参考这个问题#2394。似乎 okhttp
3.2 确实有这个重试问题。在 3.3 版本中,此行为更改为
如果我们在发送请求后遇到读取超时,请不要恢复,但如果我们遇到建立连接超时,请恢复。