JEditorPane не может принимать поисковые запросы Google, почему? - PullRequest
0 голосов
/ 03 декабря 2009

Я создаю очень простой веб-браузер, использующий JEditorPane, просто для изучения Swing и графического интерфейса на Java, но у меня возникают проблемы с реализацией панели поиска Google, подобной Firefox.

Это не так, если это связано с ограничением JEditorPane или моим отсутствием понимания, но если я попытаюсь взять строку, введенную в строку «Поиск Google», и использовать метод setPage () JEditorPane, это не работа.

Вот мой код для ActionListener кнопки «Поиск Google»:

public void actionPerformed(ActionEvent arg0) 
{
    try
    {
        content.setPage("http://www.google.com/search?q=" + searchBar.getText());
    }
    catch (IOException e) 
    {
        JOptionPane.showMessageDialog(frame, "Error searching for: " + searchBar.getText());
    }
}

Даже когда я пытаюсь и просто делаю content.setPage ("http://www.google.com/search?p=test");, он не работает, так что это как-то связано с тем, как setPage () получает строку URL? как символы "?" или "=" или есть другой способ сделать все это вместе?

Спасибо за ваше время,

InfinitiFizz

Ответы [ 4 ]

1 голос
/ 30 апреля 2010

Добавьте что-нибудь, чтобы напечатать исключение, которое вы ловите, и вы увидите, что вы получаете 403 Запрещено от Google .

Существует множество Java-ботов, и сайты начали блокировать запросы с помощью "java" в поле User-agent. Google позволит вам получить их домашнюю страницу, но не разрешит вам поиск, если вы не переопределите поле User-agent.

Запустите jvm с -Dhttp.agent=myappname/1.0, где myappname - это имя вашего приложения.

0 голосов
/ 03 декабря 2009

Как сказал adrian.tarau, JEditorPane очень плохо отображает современные веб-страницы.
Он даже не поддерживает HTML 4 или Javascript. Я считаю, что Google использует Javascript, чтобы кнопка поиска работала.

Другим предложением будет использование браузера Lobo / Cobra engine .

0 голосов
/ 03 декабря 2009

Если вам нужен полноценный браузер на Java, посмотрите Lobo: http://lobobrowser.org/java-browser.jsp

0 голосов
/ 03 декабря 2009

JEditorPane - плохой выбор для реализации даже самого простого браузера. Он работает для отображения простых HTML-страниц, но на этом останавливается.

Попробуйте Проект "Летающая тарелка" , он работает довольно хорошо (это не полный браузер, но достаточно близко). У них есть пример, который фактически имитирует веб-браузер.

...