2013-06-11 94 views
0

我幾乎都從here複製了以下代碼。我在第10行得到一個java.net.SocketException,表示「連接重置」。SocketException:連接重置

import java.net.*; 
import java.io.*; 
import org.apache.commons.io.*; 

public class HelloWorld { 
    public static void main(String[] x) { 
     try { 
      URL url = new URL("http://money.cnn.com/2013/06/07/technology/security/page-zuckerberg-spying/index.html"); 
      URLConnection con = url.openConnection(); 
      InputStream in = con.getInputStream(); 
      String encoding = con.getContentEncoding(); 
      encoding = encoding == null ? "UTF-8" : encoding; 
      String body = IOUtils.toString(in, encoding); 
      System.out.print(body); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

我擔心這可能不是實際的代碼問題,而是我需要給Java的一些權限。我的代碼有問題嗎?或者這是一個環境問題?

+0

哪個操作系統?哪個環境? (提示:在企業環境中,您很可能不會直接連接到Web服務器,並且您必須通過代理) – fge

+0

我同意@fge,您也可以嘗試修改用戶 - 代理或IDS系統阻止可能來自機器人的請求。嘗試在像System.setProperty(「http.agent」,「Mozilla/5.0(Windows NT 6.1)AppleWebKit/537.36(KHTML,如Gecko)Chrome/28.0.1468.0 Safari/537.36」);' – gma

+0

I' m在Ubuntu 12.我在其他一些項目中使用直接連接(除非python在幕後爲我做些什麼)。我試了很多網站,似乎沒有任何工作。 – Jake

回答

0

我用你的代碼進行小修改,因爲我手上沒有IOUtils。它的工作原理應該如此。沒有必要設置代理。當我由普通用戶運行時,也沒有特別的權限。

try { 
     URL url = new URL("http://money.cnn.com/2013/06/07/technology/security/page-zuckerberg-spying/index.html"); 
     URLConnection con = url.openConnection(); 
     InputStream in = con.getInputStream(); 
     BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
     StringBuilder sb = new StringBuilder(); 
     String line = br.readLine(); 
     while (line != null) { 
      sb.append(line); 
      line = br.readLine(); 
     } 
     System.out.print(sb.toString()); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

但是這段代碼不會改變任何東西。只要我'con.getInputStream()'我得到了異常。這似乎證實我們的系統在配置上存在差異。 – Jake

+0

你可以在控制檯中運行 - wget http://money.cnn.com/2013/06/07/technology/security/page-zuckerberg-spying/index.html嗎? index.html中的內容是什麼? – INeedMySpace

+0

它完全下載它沒有問題 – Jake

相關問題