java搜索google图像-错误302-文档已移动
我在尝试从Java进行google搜索时遇到了一个问题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
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&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>
找到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上,它不再更新