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

java搜索google图像-错误302-文档已移动,java,google-search,Java,Google Search,我在尝试从Java进行google搜索时遇到了一个问题 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.openConnectio

我在尝试从Java进行google搜索时遇到了一个问题

 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
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>
谁能帮帮我吗


谢谢

这就是谷歌选择将您重定向到不同URL的方式。“原始”HTTP响应将如下所示:

302 Moved
The document has moved
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&amp;as_filetype=jpg&amp;start=0&amp;num=5&amp;q=booba&amp;client=google-csbe&amp;cx=xxxxxxx-xxxxxxx
Connection: Keep-Alive
Content-Length: 325

<!DOCTYPE html>
<html>
...
</html>
找到HTTP/1.1 302 日期:2017年5月1日星期六20:51:40 GMT 内容类型:text/html;字符集=utf-8 地点:https://cse.google.com/cse?searchtype=image&as_filetype=jpg&;开始=0&;num=5&;q=布巴舞;客户端=谷歌csbe&;cx=xxxxxxx-xxxxxxx 连接:保持活力 内容长度:325 ... 这里的关键是
Location
标题,它指示新的URL。Java的
URLConnection
应该自动遵循重定向。但是,当重定向将升级连接时,情况并非如此(就像这里所做的那样)


您应该使用HTTPS安全地启动连接,或者从每个302响应中解析出
位置
头并创建到该URL的新连接。

我更改了请求,现在,我有一个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
这可能是由于谷歌服务器密钥导致的问题,我应该进入谷歌开发者的控制台,但无法访问控制台,当我尝试去那里时,它会给我一个空白页:

你知道为什么吗?

好的, 我找到了答案,要使用自定义搜索,您需要有一个cx值和一个键值,可以从中获取 为了使请求正常工作,还需要将start参数设置为最小值1,因为0会给您一个错误400无效值

这篇文章对我帮助很大:

这是我的请求:

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

其余的响应头是什么样子的?您好,谢谢,这是消息的其余部分:302已移动302已移动文档已移动>。我试图用https启动连接。现在我有一个IOException java.io.IOException:服务器返回了HTTP响应代码:400作为URL:您能发布整个原始响应的要点或粘贴行吗(如我在回答中引用的)?谢谢,我没有更多的响应,现在我只有一个io异常:sun.net.www.protocol.HTTP.HttpURLConnection.getInputStream0(未知源)异常是由以下行引发的:connection.getInputStream(),如果我直接在google上执行此操作,我会得到以下结果:错误400(错误请求)!!1我的请求似乎不正确好的,如果你的请求正确后仍然不起作用,请回来你提供的链接对我来说很好,尽管是在手机上。尝试常见的怀疑:清除缓存和cookies,重新启动浏览器,等等谢谢,问题是chrome navigator,我在XP上,它不再更新