2012-07-29 38 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