Code Bye

HttpClient超时重复提交问题

问题描述
HttpClient设置5秒超时,发生超时的情况下,会自动retry,重复提交
Post的情况下都会,求解决办法
看了一下参数,没有设置是否retry或者retry多少次的地方。。。

HttpClient  会重复提交? 我以前没遇到过,你debug一下 看看 是不是你的代码中 主动重复执行了网络操作。
根据状态判断,判断正确了就不repy了
引用 1 楼 birdsaction 的回复:

HttpClient  会重复提交? 我以前没遇到过,你debug一下 看看 是不是你的代码中 主动重复执行了网络操作。

重来没写过重复提交的代码,我倒是想自己写
它自己连POST请求都retry了

1.加判断,timeout后就不提交了或者间隔多久再retry.
2.代码中有多次提交,httpclient支持多线程,可能你启动了多个线程post.

40分
httpClient.setHttpRequestRetryHandler(new RetryHandler(count));
AbstractHttpClient有这个方法setHttpRequestRetryHandler(HttpRequestRetryHandler retryHandler) 
你看下,是不是你代码里面加了这个方法,或者框架里面的封装了这个方法
应该是自身的框架或者封装中对于重新请求做了处理,全局搜索一下楼上的方法名
引用 5 楼 zahngzhic 的回复:

httpClient.setHttpRequestRetryHandler(new RetryHandler(count));
AbstractHttpClient有这个方法setHttpRequestRetryHandler(HttpRequestRetryHandler retryHandler) 
你看下,是不是你代码里面加了这个方法,或者框架里面的封装了这个方法

你是对的,HttpClient这个类没有RetryHandler这东西
DefaultHttpClient实现了AbstractHttpClient,
有protected abstract org.apache.http.client.HttpRequestRetryHandler createHttpRequestRetryHandler();
这个方法
继承DefaultHttpClient重载createHttpRequestRetryHandler即可


CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明HttpClient超时重复提交问题