尝试从Java进行谷歌搜索时遇到问题。
URL url = new URL("http://www.google.com/cse?searchtype=image&as_filetype=jpg&start=0&num=5&q=booba&client=google-csbe&cx=xxxxxxxxxxxxxxxxxxx");
URLConnection connection = url.openConnection();
String line;
StringBuilder builder = new StringBuilder();
BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while((line = reader.readLine()) != null) {
builder.append(line);
System.out.println(line);
}
结果如下:
302 Moved
The document has moved
有人可以帮我吗?
感谢
答案 0 :(得分:1)
这就是Google选择将您重定向到其他网址的方式。 ' raw' HTTP响应看起来像这样:
HTTP/1.1 302 Found
Date: Sat, 01 May 2017 20:51:40 GMT
Content-Type: text/html; charset=utf-8
Location: https://cse.google.com/cse?searchtype=image&as_filetype=jpg&start=0&num=5&q=booba&client=google-csbe&cx=xxxxxxx-xxxxxxx
Connection: Keep-Alive
Content-Length: 325
<!DOCTYPE html>
<html>
...
</html>
这里的关键是Location
标题,表示新的URL。 Java的URLConnection
应该自动关注重定向。但是,重定向会升级连接from HTTP to HTTPS(就像在此处一样)时不会出现这种情况。
您应该使用HTTPS安全地启动连接,或者从每个302响应中解析Location
标头并创建与该URL的新连接。
答案 1 :(得分:0)
我改变了我的请求,现在,我有403错误:
{ "error": { "errors": [ {
"domain": "usageLimits",
"reason": "dailyLimitExceededUnreg",
"message": "Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup.",
"extendedHelp": "code.google.com/apis/console"; } ],
"code": 403, "message": "Daily Limit for Unauthenticated Use Exceeded
这可能是谷歌服务器Key引起的问题我应该在谷歌开发者的控制台中获取,但是它无法访问控制台,当我尝试去那里时它给了我一个空白页面:
你知道为什么吗?答案 2 :(得分:0)
确定, 我找到答案,要使用自定义搜索,你需要有一个cx值和一个关键值,你可以得到https://console.developers.google.com/ 为了使您的工作要求,您还需要将start参数设置为最小值1,因为0会给出错误400无效值
这篇文章给了我很多帮助:
Google image search says api no longer available
这是我的要求:
https://www.googleapis.com/customsearch/v1?key=xxxxxxx&searchtype=image&start=1&num=5&q=monkey&as_filetype=png&client=google-csbe&output=xml_no_dtd&cx=xxxxxx