HTTP请求自动重发问题

ustbsjl 2008-01-27 10:14:41
我有一个接受http请求的服务端,后来写了一个简单的客户端,客户端代码如下:
package com.umpay.preboss.test;

import java.io.BufferedReader;
import java.io.DataInputStream;
import java.io.FileInputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

import com.umpay.preboss.httpServer.Socklet2HTTP;

public class HttpPostTest {
private static Log _log = LogFactory.getLog(Socklet2HTTP.class);

public static void main(String args[]) throws Exception {

DataInputStream dis = new DataInputStream(new FileInputStream(
"bin\\test.xml"));
StringBuffer sb = new StringBuffer();

String temp = null;
temp = dis.readLine();
while (temp != null) {
sb.append(temp);
temp = dis.readLine();
}
String url ="http://localhost:9000/dobusiness";

StringBuffer sbody = new StringBuffer();
sbody.append("$xmldata=").append(sb.toString());
_log.debug("发送报文[" + sbody + "]");
byte[] httpReq = sbody.toString().getBytes();
_log.info("length = " + httpReq.length);
URL httpurl = new URL(url);
HttpURLConnection httpConn = (HttpURLConnection) httpurl
.openConnection();
//httpConn.setConnectTimeout(10000);
httpConn.setRequestMethod("POST");
httpConn.setDoOutput(true);
httpConn.setDoInput(true);
httpConn.setUseCaches(false);

//httpConn.set
String httpRes = "";
try {
_log.debug("urlc.send()...");
// 发送请求
OutputStream os = httpConn.getOutputStream();
os.write(httpReq); // 发送body数据
os.flush();
os.close();
_log.debug("urlc.recv()...");
// 判断响应
int rcode = httpConn.getResponseCode();
if (rcode != HttpURLConnection.HTTP_OK) {
throw new Exception("rcode!=HttpURLConnection.HTTP_OK");
}
// 接受报文体信息
InputStream in = httpConn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
StringBuffer sb1 = new StringBuffer();
String s = "";
while ((s = br.readLine()) != null) {
sb1.append(s + "\r\n");
}
in.close();
System.out.println(sb1.toString());
} catch (Exception e) {
_log.error(e);
} finally {
httpConn.disconnect();
}

}
}

如果我的服务端没有很快的响应这个请求的话,服务端马上会收到客户端的第二次请求,客户端自动重发了一次,请教各位大虾是否碰到过这种情况,如何解决?
...全文
645 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
liyan756 2009-03-24
  • 打赏
  • 举报
回复
上述问题的解决方法的帖子,在什么地方呀,急!
liy@bytter.com
e_god 2008-01-29
  • 打赏
  • 举报
回复
学习中
olivesoup 2008-01-29
  • 打赏
  • 举报
回复
另一个帖子已经有答案了,不再回复
老紫竹 2008-01-27
  • 打赏
  • 举报
回复
重复问题,另一个帖子已经给出解决方案!
ustbsjl 2008-01-27
  • 打赏
  • 举报
回复
up,大家发表一下自己的见解
ustbsjl 2008-01-27
  • 打赏
  • 举报
回复
在两个不同的版面开两个帖子,大家一起讨论

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧