【发布时间】:2011-11-16 15:55:05
【问题描述】:
我来自this question。
下面的代码效果不好:
public static void main(String[] args) throws Exception {
for (int i = 0; i < 15; i++)
{
String google = "http://ajax.googleapis.com/ajax/services/search/web?v=1.0&q=";
String search = "test";
String charset = "UTF-8";
URL url = new URL(google + URLEncoder.encode(search, charset));
Reader reader = new InputStreamReader(url.openStream(), charset);
GoogleResults results = new Gson().fromJson(reader, GoogleResults.class);
// Show title and URL of 1st result.
System.out.println(results.getResponseData().getResults().get(0).getTitle());
System.out.println(results.getResponseData().getResults().get(0).getUrl());
}
}
如果我运行一次搜索查询就可以正常工作,但是在这个循环中我得到一个空指针异常。
不幸的是,我需要我的程序进行几个查询 :( 我该怎么办?
它在第一个results.getResponseData 处返回NullPointerException。
【问题讨论】:
-
我也面临这个问题。那么如何摆脱它呢?
-
你不能。这违反了谷歌的服务条款。不过,您可以尝试添加更长的延迟,或者尝试将 IP 发送给 Google。
-
我也添加了 ip。但仍然无法正常工作。
String address = "https://ajax.googleapis.com/ajax/services/search/web?v=1.0&start=0&userip=14.90.136.150&safe=active&rsz=8&q=";有时它不会给出任何异常并从谷歌搜索文本,但大多数时候它会抛出NullPointerException。为什么?