在Blogger帖子中,我有这个代码段
<applet codebase="https://droidsnip.googlecode.com/hg/" height="300" archive="text.jar" width="300" code="Google.class">
将此java代码存储在Google代码中: 公共类Google扩展java.applet.Applet { public static void main(){
}
public void paint(Graphics g) {
String result = sendGetRequest(
"http://www.google.com", null);
g.drawString(result, 30, 30);
}
public static String sendGetRequest(String url,
String requestParameters) {
String result = null;
if (url.startsWith("http://")) {
try {
URL url1 = new URL(url);
URLConnection conn = url1.openConnection();
// Get the response
BufferedReader rd = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
StringBuffer sb = new StringBuffer();
String line;
while ((line = rd.readLine()) != null) {
sb.append(line);
}
rd.close();
result = sb.toString();
} catch (Exception e) {
e.printStackTrace();
}
}
return result;
}
}
我在帖子中没有得到任何结果,但是我使用Eclipse获得了正常的html响应。 Blogger可能有什么问题? 顺便说一下,如果我只是用
g.drawString("test", 30, 30);
我在帖子上有一个字符串,所以它可以正常工作
答案 0 :(得分:2)
未签名的Java小程序restricted in what they can可以防止恶意使用。如果您的applet未签名,则它只能连接到托管它的服务器(在本例中为droidssnip.google.com)。
以下是关于如何sign an applet的参考资料。请注意,如果您使用自签名证书(使用keytool自行生成的证书),那么当applet运行时,系统会提示您输入安全警告。为避免这种情况,您需要来自可信证书颁发机构的证书。
答案 1 :(得分:0)
我猜你遇到了一个所谓的“同源策略”的安全限制:applet只能与从中下载的服务器通信。详情请见http://download.oracle.com/javase/tutorial/deployment/applet/security.html
更新:除了签名的applet,其他解决方法可能是实现“代理”servlet。在这种情况下,sevlet轮询google(即实现sendGetRequest方法)并与你的applet交谈(即applet读取你的servlet,而servlet又读取google)。