java搜索谷歌图像 - 错误302 - 文档已移动

时间:2017-05-01 10:18:50

标签: java google-search

尝试从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

有人可以帮我吗?

感谢

3 个答案:

答案 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引起的问题我应该在谷歌开发者的控制台中获取,但是它无法访问控制台,当我尝试去那里时它给了我一个空白页面:

https://console.developers.google.com/project

你知道为什么吗?

答案 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