这只是我正在开展的一个更大项目的一部分,但要做到这一点,我需要从特定的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();
}
}
}