2013-06-11 91 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

相关问题