JEdi​​torPane无法接受Google搜索查询,为什么?

时间:2009-12-03 19:58:35

标签: java user-interface swing jeditorpane

我正在使用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字符串的方式有关吗?因为它不喜欢“?”或“=”字符或是否有另一种方式一起完成所有这些?

感谢您的时间,

InfinitiFizz

4 个答案:

答案 0 :(得分:1)

添加内容以打印您正在捕捉的异常,您会看到您收到403 Forbidden from Google

有很多Java机器人,网站已经开始在用户代理字段中使用“java”阻止请求。谷歌将允许您获取他们的主页,但除非您覆盖用户代理字段,否则不会让您搜索。

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

答案 1 :(得分:0)

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

尝试The Flying Saucer Project,效果非常好(它不是一个完整的浏览器,但足够接近)。他们有一个模拟实际网络浏览器的例子。

答案 2 :(得分:0)

就像adrian.tarau所说,JEditorPane在展示现代网页方面非常差劲 它甚至不支持HTML 4或Javascript。我相信Google使用Javascript来使搜索按钮有效。

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

答案 3 :(得分:0)

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