Android或者Java发送Http自动重发请求的解决方案

Posted 征服

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android或者Java发送Http自动重发请求的解决方案相关的知识,希望对你有一定的参考价值。

今天遇到奇葩问题,描述如下:

客户端向服务端发起了一次(从日志中可以看出仅仅打印了一次日志),但是确在后端出现了重复的几次请求数据在后端。这个问题很不容易出现,而且用中文搜索不到相应的结果;

 

 

今天在国外的网站中找到了问题的解决方案:

原因如下:由于设置了链接与获取数据的超时时间,客户端在发送数据之后,检测到可能并没有发送成功到后端,这个时候http底层会自动重发请求(注意是Http底层,所以应用端不会知道发送了多次请求)。如果应用端自动重发了多次请求,后端也回复了多次请求,但是前段仅仅会只回复1次请求。所以为了解决这个问题,只要在DefaultHttpClient设置如下代码即可解决:

 

 

defaultHttpClient.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(0, false));

 

以上是关于Android或者Java发送Http自动重发请求的解决方案的主要内容,如果未能解决你的问题,请参考以下文章

Charles教程-重发网络请求

nginx重发3次

Fiddler模拟重发请求

DLLP/TLP

关于TOMCAT响应超时请求重发的问题

Android客户端连接服务器端,向服务器端发送请求HttpURLConnection