【问题标题】:JEditorPane can't take Google search queries, why?JEdi​​torPane 不能接受 Google 搜索查询,为什么?
【发布时间】:2010-12-22 23:38:52
【问题描述】:

我正在使用 JEditorPane 创建一个非常基本的 Web 浏览器,只是为了自学 Java 中的 Swing 和 GUI,但在实现类似 Firefox 的 Google 搜索栏时遇到了麻烦。

如果这是由于 JEditorPane 的限制或我缺乏理解,我不是,但如果我尝试将输入到“Google 搜索”栏中的字符串并使用 JEditorPane 的 setPage() 方法,它不会工作。

这是我的“Google 搜索”按钮的 ActionListener 代码:

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 字符串的方式有关吗?因为它不喜欢“?”或“=”字符还是有其他方法可以一起完成?

感谢您的宝贵时间,

英菲尼迪菲兹

【问题讨论】:

    标签: java user-interface swing jeditorpane


    【解决方案1】:

    添加一些内容以打印您捕获的异常,您会看到您收到了403 Forbidden from Google

    那里有很多 Java 机器人,并且网站已经开始阻止在 User-agent 字段中使用“java”的请求。谷歌会让你得到他们的主页,但不会让你搜索,除非你覆盖用户代理字段。

    使用 -Dhttp.agent=myappname/1.0 启动您的 jvm,其中 myappname 是您的应用程序的名称。

    【讨论】:

      【解决方案2】:

      如果您需要完整的 Java 浏览器,请查看 Lobo: http://lobobrowser.org/java-browser.jsp

      【讨论】:

      • 请看我给jonescb的回答的评论。
      【解决方案3】:

      就像 adrian.tarau 所说,JEditorPane 在显示现代网页方面很差。
      它甚至不支持 HTML 4 或 Javascript。我相信 Google 使用 Javascript 来使“搜索”按钮起作用。

      另一个建议是使用 Lobo Browser/Cobra engine

      【讨论】:

      • 我不得不使用 JEditorPane,因为我没有制作一个成熟的 Web 浏览器,这只是为了教我 Swing 和 GUI。所以不,我不能使用其他 Java 浏览器引擎。另外,正如我在上面的代码中显示的那样,我没有尝试为“Google 搜索”按钮实现监听器,我创建了一个 JTextField“搜索框”和一个 JButton“搜索”按钮,我只是想知道是否它不喜欢?或 = 在用于 Google 搜索的字符串中(因为如果我删除 ? 和 = 它会尝试转到“google.com/searchq”就好了)。谢谢你的回答,但它没有回答我的问题。
      【解决方案4】:

      即使是最简单的浏览器,JEditorPane 也是一个糟糕的选择。它可以显示简单的 HTML 页面,但它停在那里。

      试试The Flying Saucer Project,它工作得很好(它不是一个完整的浏览器,但足够接近)。他们有一个实际模拟网络浏览器的示例。

      【讨论】:

      • 请看我给jonescb的回答的评论。
      猜你喜欢
      • 2012-07-29
      • 2011-04-11
      • 1970-01-01
      • 2012-03-14
      • 2011-06-06
      • 2013-04-14
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      相关资源
      最近更新 更多