2012-07-29 40 views
0

早期这里是我使用的URLConnection看来是不行了的Java

URLConnection connection = null; 
    InputStream inputStream = null; 
    Scanner scanner = null; 

    try { 
     connection = new URL("http://www.aol.com").openConnection(); 
     inputStream = connection.getInputStream(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    scanner = new Scanner(inputStream); 

    System.out.println(connection.getReadTimeout()); 

    while(scanner.hasNextLine()) 
    { 
     System.out.println(scanner.nextLine()); 
    } 

它的代码似乎超时设置为0,但它总是在同一地点死亡取决于在哪里执行该代码。但每个地点总是停止在同一地点阅读。我运行了一个调试器,在它死后,scanner.next()不会返回。我知道这不是输入的一部分,因为此代码的不同位置在不同的时间停止。我假设它与运行时间有关。

请帮助:-(

回答

0

我跑的(略简化)代码,并得到了整个HTML页面返回

final URLConnection connection = new URL("http://www.aol.com").openConnection(); 
System.out.println(connection.getReadTimeout()); 
final Scanner scanner = new Scanner(connection.getInputStream()); 
while(scanner.hasNextLine()) System.out.println(scanner.nextLine()); 
scanner.close(); 

输出:

0 
<html 
    ... many tons of html ... 
</html> 
+0

使用 – rubixibuc 2012-07-29 11:13:11

+0

Java 6的在OS X – 2012-07-29 11:15:29

+0

这可能是与SE 7中的错误是什么版本的Java是U,我使用SE 7 – rubixibuc 2012-07-29 11:19:58

0

没有什么不对您的代码在这里,你应该检查你的网络连接,你的代理服务器可能是非常没有反应的,请尝试使用:

new URL("http://www.aol.com").openConnection(Proxy.NO_PROXY); 
-1

考虑直接从标准Ja​​va SE类访问HTTP数据为低级别。图书馆将处理很多细微差别 - 这些细微差别通常表现在你的问题等代码中。如果遇到配置问题,这实际上可能会透明地处理它们。试试吧,看它是否帮助:

HttpClient client = new HttpClient(); 
client.getHttpConnectionManager().getParams().setConnectionTimeout(5000); 
HttpMethod method = new GetMethod("http://www.aol.com"); 
method.setFollowRedirects(true); 
client.executeMethod(method); 
String responseBody = method.getResponseBodyAsString(); 
method.releaseConnection(); 

否则,其他的解决方案可以帮助你缩小与你的配置确切的问题,因为你的代码看起来不错。

+0

它*不是*'@Deprecated',它也应该工作。没有答案。 – EJP 2012-07-29 15:21:34

+0

我已经更新了我的答案,以反映为什么尝试更高级别的库是个好主意。提问者显然遭受配置或网络问题,代码看起来很好。 – fommil 2012-07-29 18:10:09

+0

没错,那为什么要改变图书馆呢?没有答案。 – EJP 2012-07-29 23:41:05