JAVA应用程序和ECLIPSE可以';我无法连接到互联网

JAVA应用程序和ECLIPSE可以';我无法连接到互联网,java,eclipse,url,connection,jsoup,Java,Eclipse,Url,Connection,Jsoup,所以我写了一段代码测试我的java连接到internet的能力。它应该从www.google.com获取html,并在JFrame的JTextArea对象中显示内容。 这是代码,因此您可以获得清晰的图片: import java.awt.Color; import java.awt.Dimension; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import jav

所以我写了一段代码测试我的java连接到internet的能力。它应该从www.google.com获取html,并在JFrame的JTextArea对象中显示内容。 这是代码,因此您可以获得清晰的图片:

import java.awt.Color;
import java.awt.Dimension;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import javax.swing.JFrame;
import javax.swing.JTextArea;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class JSoupFetchTest extends JFrame{
    String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0";
    boolean jsoupcond = true;
    String address = "http://www.google.com";
    JTextArea text;
    public JSoupFetchTest(){
        text = new JTextArea();
        text.setPreferredSize(new Dimension(500, 500));
        text.setBackground(Color.BLACK);
        text.setForeground(Color.WHITE);
        text.setVisible(true);
        text.setLineWrap(true);     
        this.add(text);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
        this.pack();        
        gogo();
    }

    private void gogo() {
        if(jsoupcond){
            text.setText(text.getText() +"\nstart...");

            try {
                text.setText(text.getText() +"\nConnecting to " +address+ "...");   
                Document doc = Jsoup.connect(address).userAgent(userAgent).get();
                text.setText(text.getText() +"\nConverting page document into text");
                String s = doc.toString();
                text.setText(text.getText() +"\nText: \n" +s);
                System.out.println();
            } catch (Exception e) {            
                text.setText(text.getText() +"\n" +e.toString());
                e.printStackTrace();
            }
            text.setText(text.getText() +"\nEnd.");
        }
        String html = downloadHtml(address);
        text.setText(text.getText() +"\nDownloading HTML...");
        text.setText(text.getText() +"\nHTML:");
        text.setText(text.getText() +"\n" +html);
    }

    private String downloadHtml(String path) {
        text.setText(text.getText() +"\ndownloadHtml entry point...");
        InputStream is = null;
        try {
            text.setText(text.getText() +"\ntry block entered...");
            String result = "";
            String line;

            URL url = new URL(path);
            text.setText(text.getText() +"\nabout to open url stream...");
            is = url.openStream();  // throws an IOException
            text.setText(text.getText() +"\nurl stream opened...");
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            text.setText(text.getText() +"\nstarting to read lines...");
            while ((line = br.readLine()) != null) {
                result += line;
            }
            text.setText(text.getText() +"\nreading lines finished...");
            return result;
        } catch (IOException ioe) {
            ioe.printStackTrace();
        } finally {
            try {
                if (is != null) is.close();
            } catch (IOException ioe) { }
        }
        return "";
    }

    public static void main(String[] args) {
        new JSoupFetchTest();       
    }
}
我还要补充一点:
1.我的eclipse(因为我正在使用eclipse)无法连接到marketplace,也无法获取更新。
2.Eclipse的web浏览器工作正常。
3.我的系统浏览器(Mozilla Firefox)连接良好
4.我将JSoupFetchTest导出到一个可运行的jar中,并尝试从系统级别运行它,但没有任何效果
5.我正在运行Windows 7 Professional MSDN版本
6.我联系了eclipse支持人员,他们认为这不是eclipse的错,并建议我支持代理。
7.我联系了我的ISP,看看我是否真的是,他们说我不是。
8.我更改了JAVA的网络设置,所以现在它可以“直接”连接。之前的设置是“使用浏览器设置”,但也不起作用。
9我的eclipse窗口->首选项->常规->网络连接活动提供程序设置为“本机”,我还尝试了“直接”
10方法downloadHtml(字符串路径)在“is=url.openStream();”处停止,并永远继续

我从JSoup得到的例外是:

java.net.SocketTimeoutException: Read timed out
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:150)
    at java.net.SocketInputStream.read(SocketInputStream.java:121)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:246)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:345)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:703)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1534)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
    at java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:453)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:170)
    at JSoupFetchTest.gogo(JSoupFetchTest.java:42)
    at JSoupFetchTest.<init>(JSoupFetchTest.java:32)
    at JSoupFetchTest.main(JSoupFetchTest.java:92)
java.net.SocketTimeoutException:读取超时
位于java.net.SocketInputStream.socketRead0(本机方法)
位于java.net.SocketInputStream.read(SocketInputStream.java:150)
位于java.net.SocketInputStream.read(SocketInputStream.java:121)
在java.io.BufferedInputStream.fill处(BufferedInputStream.java:246)
位于java.io.BufferedInputStream.read1(BufferedInputStream.java:286)
在java.io.BufferedInputStream.read处(BufferedInputStream.java:345)
位于sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:703)
位于sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:647)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream0(HttpURLConnection.java:1534)
位于sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1439)
位于java.net.HttpURLConnection.getResponseCode(HttpURLConnection.java:480)
位于org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:453)
位于org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:434)
位于org.jsoup.helper.HttpConnection.execute(HttpConnection.java:181)
位于org.jsoup.helper.HttpConnection.get(HttpConnection.java:170)
在JSoupFetchTest.gogo(JSoupFetchTest.java:42)
在JSoupFetchTest。(JSoupFetchTest.java:32)
位于JSoupFetchTest.main(jsoupfetchttest.java:92)
我还尝试将JSoup.connect的超时设置为无穷大。然后,它将永远持续下去

在你们说我的问题是重复的,或者把我委托给其他可能解决我问题的外部解决方案之前,请相信我——问题要么是我的,要么我就在那里——我浏览互联网寻找解决方案已经好几个星期了,我想拔出我的头发……

请帮助,如果你可以导致它阻止我在我的eclipse中安装东西和开发除独立应用程序以外的任何东西

在URL--“http:/www.google.com:80”生效后,您需要一个套接字编号。JSoup可能会使用默认值,但在Java中以流的形式打开URL则不然。

以下程序适合我。因此Java和
JSoup
正在工作。这一定是您的网络存在某种本地配置问题。检查防火墙、路由器、网关和Java权限。对项目进行干净的重建。等等。注释出行,直到它工作,然后一次放回一行,直到你发现问题。等等

package stuff;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.Reader;
import java.net.URL;
import java.net.URLConnection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;


public class SocketTest
{

   public static void main( String[] args ) throws Exception
   {
      URL url = new URL( "http://www.google.com" );
      URLConnection sock = url.openConnection();
      InputStream ins = sock.getInputStream();
      BufferedReader reader = new BufferedReader( new InputStreamReader(ins, "UTF-8" ) );
      for( String line; (line = reader.readLine()) != null; ) {
         System.out.println( line );
      }
      ins.close();

      Document doc = Jsoup.connect( "http://www.google.com" ).get();
      System.out.println( doc.toString() );

      String userAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:37.0) Gecko/20100101 Firefox/37.0";
      Document doc2 = Jsoup.connect( "http://www.google.com" ).userAgent(userAgent).get();
      System.out.println( doc2.toString() );

   }
}

你观察到的意外行为到底是什么?是否有例外;暂停,等等?!“无法连接到互联网”有点不具体。很好,再进一步。我忘记问的是:当你把日食从等式中去掉时会发生什么;意思是:你能从命令行成功运行程序吗?你必须使用JSoup吗?你能用普通插座测试吗?这看起来像是一个本地配置问题,将JSoup从图中删除将消除该库出现配置问题的可能性;你为什么把你的时间(可能还有我们的)浪费在等式上?我同意markspace——从“最简单”的例子开始;当它起作用时——然后考虑让你的例子更复杂。你可能有一个防火墙阻止Java连接。禁用它。我按照您的建议添加了端口号,但其行为方式仍然相同。我将尝试按照JBNizet的建议关闭防火墙,看看是否有帮助。你是对的——我去掉了端口号(并注释掉了所有的JSoup内容),它仍然有效。所以添加端口号不是解决方案。防火墙已关闭。。。windows one和ISP one也一样,我知道我的网关地址,但我不知道如何使用它,我真的不知道在路由器设置中查找什么(而且由于浏览器工作正常,我看不出它有什么用处。请您解释一下好吗?)。Java权限设置为可能的最低值,即“高”,但是Java更新很好,只是Java应用程序没有。