//当服务器回复为keep-alive的时候没有问题,但是当是close的时候,就getInputStream就出错了,几乎试过了所有的httpurlconnection的所有的方法,就是获取不到close后面的数据。不知道说明白没有。怎样获取呢?谢谢。
URL inURL=new URL(url);
HttpURLConnection http=(HttpURLConnection)inURL.openConnection();
    http.setRequestProperty("User-Agent", "Mozilla/5.0 ");
    http.setRequestProperty("Connection", "keep-alive");
    http.connect();
InputStream in=http.getInputStream();

解决方案 »

  1.   

    是服务器close的,但是后面仍然是有数据的。
    下面是我的请求以及服务器回复的描述。
    //我的请求
    GET /juas/validatecodegen HTTP/1.1User-Agent: Java/1.6.0Host: paper.people.com.cnAccept: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2Connection: keep-alive
    //服务器的回复
    HTTP/1.0 200 OKDate: Mon, 25 Jan 2010 01:04:18 GMTServer: Apache-Coyote/1.1Pragma: No-cacheCache-Control: No-cacheExpires: Thu, 01 Jan 1970 00:00:00 GMTSet-Cookie: JSESSIONID=3368A7934342AFA006602B804780716E; Path=/juasContent-Type: text/plainPowered-By-ChinaCache: MISS from CNC-LY-3-336Connection: close//下面是这次传送的数据......JFIF.............C..............
      

  2.   

    当服务器回复为keep-alive的时候没有问题,但是当是close的时候,就getInputStream就出错了,
    ---应该没有错误啊?不太明白你说的 错误是什么?
    URL inURL = new URL("http://localhost:8080/test/a.jpg");
    HttpURLConnection http = (HttpURLConnection) inURL.openConnection();
    http.setRequestProperty("User-Agent", "Mozilla/5.0 ");
    //http.setRequestProperty("Connection", "keep-alive");
    http.setRequestProperty("Connection", "close");
    http.connect();
    InputStream in = http.getInputStream();
    System.out.println(in);两种都很正常啊
      

  3.   

    没看懂。
    数据传完了当然就close了。
      

  4.   

    模拟登陆?还是模拟浏览?
    如果是模拟的,用真实的IE或者别的FF什么的,装个Http inject之类的工具,看看到底你发送的请求正确不正确,诸如报文长度,协议格式,post参数等等,仔细看看。
      

  5.   

    不明白楼主的意思,close 后再建一个连接到服务器
      

  6.   

    每个Web服务器处理请求都是不同的,可能你少写一个参数就会导致不同的结果,5楼说的有道理,用这个HTTP Analyzer工具分析一下request和response,然后看一下Apache-Coyote/1.1需要的一些头信息。
      

  7.   

    LZ可以看看我blog中的这篇文章。
    http://blog.csdn.net/Dothwinds/archive/2009/10/16/4683098.aspx