Java-код (URLConnection - метод удаленного получения) в HTML (пост Blogger.com) - PullRequest
1 голос
/ 04 ноября 2011

В посте 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;
    }
}

И я не получаю никаких результатов по почте, но я получаю нормальный ответ HTML, используя Eclipse В чем может быть проблема с Blogger? Кстати, если я просто использую

g.drawString("test", 30, 30);

Я получаю строку на почту, так что она работает

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

Неподписанные Java-апплеты ограничены в том, что они могут делать для предотвращения злоумышленного использования.Если ваш апплет не подписан, он может подключиться только к серверу, на котором он размещен (например, в данном случае droidssnip.google.com).

Вот справка о том, как подписать апплет .Обратите внимание, что если вы используете самозаверяющий сертификат (тот, который вы создаете самостоятельно с помощью keytool), то при запуске апплета вам будет выдано предупреждение о безопасности.Чтобы избежать этого, вам понадобится сертификат от доверенного центра сертификации.

0 голосов
/ 04 ноября 2011

Полагаю, вы столкнулись с ограничением безопасности, так называемой «политикой того же происхождения»: апплет может общаться только с сервером, с которого он был загружен.Подробности см. Здесь: http://download.oracle.com/javase/tutorial/deployment/applet/security.html

Обновление: кроме подписанных апплетов, другим обходным путем может быть реализация сервлета "прокси".В этом случае сервлет опрашивает Google (т. Е. Реализует метод sendGetRequest) и обращается к вашему апплету (т. Е. Апплет читает ваш сервлет, который, в свою очередь, читает google).

...