如何使用java applet从特定URL获取HTML代码?

时间:2012-03-11 08:02:29

标签: java html url applet accesscontrolexception

这只是我正在开展的一个更大项目的一部分,但要做到这一点,我需要从特定的URL获取HTML代码。我尝试了不同来源的一些程序,都导致了同样的错误,也就是说,它会导致异常被捕获(我的textarea设置为ERROR)。

我尝试使用像jsoup这样的第三方库,但无法使其正常工作。

然后,我认为applet没有工作,因为它是未签名的。 但是,即使在自签名之后,按照Applet Security with Self-Signing Jar Files上的说明,我仍然会收到相同的错误。

我仍然相对较新的Java applet。因此,如果您要提供替代代码示例,请提及标题文件。

哦,这个程序是从一个完美运行的Console Java应用程序中修改过来的。但是,每当我尝试将其转换为applet时,都会出现故障。


错误:

java.security.AccessControlException: access denied (java.net.SocketPermission metalwihen.com:80 connect,resolve)
    at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374)
    at java.security.AccessController.checkPermission(AccessController.java:546)
    at java.lang.SecurityManager.checkPermission(SecurityManager.java:532)
    at java.lang.SecurityManager.checkConnect(SecurityManager.java:1034)
    at sun.net.www.http.HttpClient.openServer(HttpClient.java:528)
    at sun.net.www.http.HttpClient.<init>(HttpClient.java:234)
    at sun.net.www.http.HttpClient.New(HttpClient.java:307)
    at sun.net.www.http.HttpClient.New(HttpClient.java:324)
    at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:970)
    at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:911)
    at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:836)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1172)
    at GrabHTML_Applet.Connect(GrabHTML_Applet.java:39)
    at GrabHTML_Applet.init(GrabHTML_Applet.java:24)
    at sun.applet.AppletPanel.run(AppletPanel.java:424)
    at java.lang.Thread.run(Thread.java:662)

我的计划:

import java.awt.*;
import java.applet.*;
import java.io.*;
import java.net.*;

public class GrabHTML_Applet extends Applet  {

    private TextArea html;

    public void init()
    {
        setBackground(Color.lightGray);

        Panel panel=new Panel();
        panel.setLayout (new GridLayout(1,1,50,50));
        html=new TextArea(10,50);

        Connect();

        panel.add(html);
        add(panel);
    }

    public void Connect()
    {
        try {
            URL yahoo = new URL("http://metalwihen.com/");
            URLConnection yc = yahoo.openConnection();
            BufferedReader in = new BufferedReader(
                new InputStreamReader(
                    yc.getInputStream()));
            String inputLine;

            while ((inputLine = in.readLine()) != null)
                html.append(inputLine);
            in.close();
        } catch(Exception e) {
            html.append("ERROR");
            e.printStackTrace();
        }
    }
}

0 个答案:

没有答案