http请求重复问题解决【防止HttpClient重复请求】

在http  POST/GET  请求函数内加上以下代码【推荐以下

 

HttpClient 设置超时后,若在设定的时间内没有返回数据,httpClient底层会重复请求

DefaultHttpClient client = new DefaultHttpClient();

client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 5000);// 请求超时
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);// 连接超时

client.setHttpRequestRetryHandler(new DefaultHttpRequestRetryHandler(0, false));//防止重复提交

或者:

        // 设置 HttpPost请求超时为 5 秒
	RequestConfig requestConfig = RequestConfig.custom()
				.setSocketTimeout(5000).setConnectTimeout(5000).build();
	HttpPost httpPost = new HttpPost(url);
	httpPost.setConfig(requestConfig);


以下仅供参考:


一、发现问题

   环境:chrome apache php 

    今天在接口本地开发的时候发现数据重复插入,通过查看apache的access.log日志发现有两条请求日志

             

二、解决问题

    通过百度等手段,了解可能原因是 http 的keep alive导致(参考:https://blog.csdn.net/edward30/article/details/8661105),在代码中添加"Connection: close"发现没有起作用。应该不是这个原因导致。继续思考,最后在chrome高级设置中,找到两项可疑配置

         

在关闭两项后 问题解决。

 

你可能感兴趣的:(eclipse,JAVA)