当前位置: 代码迷 >> Java Web开发 >> HTTP请求自动重发有关问题
  详细解决方案

HTTP请求自动重发有关问题

热度:451   发布时间:2016-04-17 12:28:43.0
HTTP请求自动重发问题
我有一个接受http请求的服务端,后来写了一个简单的客户端,客户端代码如下:
Java code
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();        }    }}

如果我的服务端没有很快的响应这个请求的话,服务端马上会收到客户端的第二次请求,客户端自动重发了一次,请教各位大虾是否碰到过这种情况,如何解决?

------解决方案--------------------
重复问题,另一个帖子已经给出解决方案!
------解决方案--------------------
另一个帖子已经有答案了,不再回复
  相关解决方案