以编程方式搜索谷歌而不使用ajax

时间:2016-05-09 08:10:59

标签: java android json ajax google-search-api

显然google已经退出了我在java for android中使用的ajax api,我挖掘了他们的新API页面,但我找不到任何似乎适用于java或任何非网络语言的内容物质

这就是我之前的情况:

@Override
protected String doInBackground(String... query) {
    try {
        BufferedReader reader = new BufferedReader(new InputStreamReader(new URL("http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=" + URLEncoder.encode(query[0], "UTF-8")).openStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();

        return sb.toString();
    }
    catch(Exception e){e.printStackTrace();
        return "failed to do anything";
    }
}

简单地说,提供了一个字符串,并附加到ajax搜索中。结果以JSON格式处理为字符串构建器,然后作为整个字符串返回。

如果您现在尝试执行此操作,则会返回此结果:

{"responseData": null, "responseDetails": "The Google Web Search API is no longer available. Please migrate to the Google Custom Search API (https://developers.google.com/custom-search/)", "responseStatus": 403}

同样,我已经阅读了自定义搜索API,但没有找到任何可以在javascript之外工作的内容。

我更喜欢JSON解决方案,因为我已经使用了它,但我可以使用我得到的任何东西。

那么,是否有一些替代方案可以使用类似的方法?或者我会被迫进入另一个搜索引擎?

//修改

好的,我现在有了固定的代码。但是它需要一个API密钥,我无法在我的开源项目中发布,除非我支付,否则它的搜索量有限,所以我将被迫去竞争对手。 以下是任何感兴趣的人的固定代码:

@Override
protected String doInBackground(String... query) {
    try {
        String APIKey = "INSERT_YOUR_API_KEY";
        String customSearchEngine = "INSERT_YOUR_CUSTOM_SEARCH_KEY";
        BufferedReader reader = new BufferedReader(new InputStreamReader(new URL("https://www.googleapis.com/customsearch/v1?key=" + APIKey + "&cx=" + customSearchEngine + "&q=" + URLEncoder.encode(query[0], "UTF-8")).openStream()));
        StringBuilder sb = new StringBuilder();
        String line = null;
        while ((line = reader.readLine()) != null) {
            sb.append(line).append("\n");
        }
        reader.close();

        return sb.toString();
    }
    catch(Exception e){e.printStackTrace();
        return "failed to do anything";
    }
}

1 个答案:

答案 0 :(得分:1)

他们在该网站上提到了JSON API here

这是一个REST API。 Google for" Java REST客户端"从Java中获取如何使用它的一些例子