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

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

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

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

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

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

 

时间: 2024-10-11 11:22:15

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

Android(或者Java)通过HttpUrlConnection向SpringMVC请求数据(数据绑定)

问题描述 当我们使用SpringMVC作为服务端的框架时,有时不仅仅要应对web前端(jsp.javascript.Jquery等)的访问请求,有时还可能需要响应Android和JavaSE(桌面应用)这些客户端的请求,因此,除了web使用form表单或者ajax作为客户端获取Controller响应之外,纯Java语言向SpringMVC的Controller提供参数和请求结果也是必须要实现的.web前端使用form和ajax来获取Controller响应在本篇博客暂不深究,本篇博课着力于实现

Java发送get及post请求工具方法

import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map; public class HttpRequest { /** *

Java 发送Get和Post请求

1 package com.htpt.superviseServices.dm.util; 2 3 import java.io.BufferedReader; 4 import java.io.IOException; 5 import java.io.InputStreamReader; 6 import java.io.PrintWriter; 7 import java.net.URL; 8 import java.net.URLConnection; 9 import java.uti

Java发送http get/post请求,调用接口/方法

由于项目中要用,所以找了一些资料,整理下来. GitHub地址: https://github.com/iamyong    转自:http://blog.csdn.net/capmiachael/article/details/51833531 例1:使用 HttpClient (commons-httpclient-3.0.jar 1 import java.io.ByteArrayInputStream; 2 import java.io.ByteArrayOutputStream; 3

JAVA发送GET、POST请求

注意:本文使用 httpcomponents-client-4.4 版,和以前的 3.X 版本有较大区别. 一.创建一个servlet来接收get或post请求 package guwen; import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import javax.servlet.ServletException; import javax.servlet.http.HttpS

java发送GET和post请求

1 package com.baqingshe.bjs.util; 2 3 import java.io.BufferedReader; 4 5 import java.io.IOException; 6 7 import java.io.InputStream; 8 9 import java.io.InputStreamReader; 10 11 import java.io.PrintWriter; 12 13 import java.net.URL; 14 15 import java.

Android入门:发送HTTP的GET和POST请求

HTTP的请求详解在我的博客中已经讲解过: http://blog.csdn.net/xiazdong/article/details/7215296 我在http://blog.csdn.net/xiazdong/article/details/7725867 中已经封装了一个HTTP请求的辅助类,因此可以很简单的发送GET.POST请求: 如HttpRequestUtil.sendGetRequest();是发送GET请求: 一.核心代码 HTTP GET 核心代码: (1)String v

android 向服务器Get和Post请求的两种方式,android向服务器发送文件,自己组装协议和借助第三方开源

/** * @author [email protected] * @time 20140606 */ package com.intbird.utils; import java.io.BufferedReader; import java.io.DataOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream

Android开发使用GET方式向服务器请求和发送数据

#1.首先先用新建个servlet处理登陆请求 代码如下.只实现了doGet方法 package com.wzw.servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSe