HTML中的Java代码(URLConnection - 远程获取方法)(Blogger.com帖子)

时间:2011-11-04 14:29:54

标签: java html httpurlconnection blogger urlconnection

在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);

我在帖子上有一个字符串,所以它可以正常工作

2 个答案:

答案 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)。