首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >java urlconnection不抛出sockettimeoutexception

java urlconnection不抛出sockettimeoutexception
EN

Stack Overflow用户
提问于 2012-05-08 05:55:25
回答 1查看 1K关注 0票数 4

我经常遇到java after连接,即使使用setReadTimeOut(),它也不会在应该抛出sockettimeoutexception异常时抛出,而且它始终与最终(挂起2-3分钟后)过早的EOF异常相关联。我在一些博客上看到,这可能与使用BufferedReader的readLine方法读取有关,String x= "";while((x=bufferedReader.readLine())!=null){}

如果在输入流的结尾处没有换行符,则在文件结尾处。这是不合理的,为什么java的setTimeOut不能正确运行?

代码语言:javascript
复制
       URL url=new URL("");
      c=(HttpURLConnection)url.openConnection();
      c.setReadTimeout(17000);
      BufferedReader b = new BufferedReader(new InputStreamReader(c.getInputStream()));
      String s;

      while((s=b.readLine())!=null)
      {     
          } ect.






    java.io.IOException: Premature EOF
at sun.net.www.http.ChunkedInputStream.readAheadBlocking(Unknown Source)
at sun.net.www.http.ChunkedInputStream.readAhead(Unknown Source)
at sun.net.www.http.ChunkedInputStream.read(Unknown Source)
at java.io.FilterInputStream.read(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$HttpInputStream.read(Unknown Source)
at sun.nio.cs.StreamDecoder.readBytes(Unknown Source)
at sun.nio.cs.StreamDecoder.implRead(Unknown Source)
at sun.nio.cs.StreamDecoder.read(Unknown Source)
at java.io.InputStreamReader.read(Unknown Source)
at java.io.BufferedReader.fill(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)
at java.io.BufferedReader.readLine(Unknown Source)

以下是响应头部(截断了确切的cookie信息):

代码语言:javascript
复制
     [HTTP/1.1 200 OK]
     p3p ["",""]
     x-frame-options [SAMEORIGIN]
     Date [Tue, 08 May 2012 15:01:40 GMT]
     Vary [Accept-Encoding,User-Agent]
     Transfer-Encoding [chunked]
     Set-cookie [""=""; path=/; domain=""; expires=Tue, 01-Jan-2036 08:00:01 GMT]
     Content-Type [text/html; charset=ISO-8859-1]
     Server [Server]
EN

回答 1

Stack Overflow用户

发布于 2012-05-08 06:11:00

请参阅setReadTimeout的文档

代码语言:javascript
复制
Some non-standard implementation of this method ignores the specified timeout.

如果您认为这不是问题所在,请将超时设置为一个非常低的数字,如1,然后进行检查。您应该会得到一个java.net.SocketTimeoutException异常。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10489717

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档