显然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";
}
}
答案 0 :(得分:1)
他们在该网站上提到了JSON API here
这是一个REST API。 Google for" Java REST客户端"从Java中获取如何使用它的一些例子