Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 谷歌安全浏览HTTP POST-403响应_Java_Google Api_Safe Browsing - Fatal编程技术网

Java 谷歌安全浏览HTTP POST-403响应

Java 谷歌安全浏览HTTP POST-403响应,java,google-api,safe-browsing,Java,Google Api,Safe Browsing,我正在开发一个程序,可以查询谷歌安全浏览的特定URL,但我得到了一个我认为不应该得到的错误 我发送以下请求: 2 http://google.com http://facebook.com 通过邮寄至:https://sb-ssl.google.com/safebrowsing/api/lookup?client=api&apikey=[键]&appver=1.5.2&pver=3.1 然而,我得到了403的回复 这是文档中针对HTTP POST查找错误的说明: 服务器为POST请求生成以下H

我正在开发一个程序,可以查询谷歌安全浏览的特定URL,但我得到了一个我认为不应该得到的错误

我发送以下请求:

2
http://google.com
http://facebook.com
通过邮寄至:
https://sb-ssl.google.com/safebrowsing/api/lookup?client=api&apikey=[键]&appver=1.5.2&pver=3.1

然而,我得到了403的回复

这是文档中针对HTTP POST查找错误的说明:

服务器为POST请求生成以下HTTP错误代码:

•200:至少有一个查询的URL在网络钓鱼、恶意软件或不需要的软件列表中匹配。实际结果通过响应主体返回

•204:查询的URL均与网络钓鱼、恶意软件或不需要的软件列表不匹配,并且未返回任何响应正文

•400:错误请求HTTP请求的格式不正确

•401:未授权API密钥未授权

•503:服务不可用服务器无法处理请求。除了正常的服务器故障外,这还可能表明客户端因发送太多请求而被“限制”

响应代码403没有列出,但我已经知道了

我已经三次检查了我的API密钥,并确保为我的项目启用了API。我正在使用服务器密钥,但我也尝试了浏览器密钥

我也试着做了一个GET请求,这确实有效,但我无法让POST工作。发生什么事了

这是我的密码:

try {
   String baseURL="https://sb-ssl.google.com/safebrowsing/api/lookup";
   String arguments = "";
   arguments +=URLEncoder.encode("client", "UTF-8") + "=" + URLEncoder.encode("api", "UTF-8") + "&";
   arguments +=URLEncoder.encode("apikey", "UTF-8") + "=" + URLEncoder.encode("[KEY]", "UTF-8") + "&";
   arguments +=URLEncoder.encode("appver", "UTF-8") + "=" + URLEncoder.encode("1.5.2", "UTF-8") + "&";
   arguments +=URLEncoder.encode("pver", "UTF-8") + "=" + URLEncoder.encode("3.1", "UTF-8");

   // Construct the url object representing cgi script
   URL url = new URL(baseURL + "?" + arguments);    

   // Get a URLConnection object, to write to POST method
   HttpURLConnection connect = (HttpURLConnection) url.openConnection();
   connect.setRequestMethod("POST");

   // Specify connection settings
   connect.setDoInput(true);
   connect.setDoOutput(true);

   // Get an output stream for writing
   OutputStream output = connect.getOutputStream();
   PrintStream pout = new PrintStream (output);
   pout.print("2");
   pout.println();
   pout.print("http://www.google.com");
   pout.println();
   pout.print("http://www.facebook.com");
   pout.close();                   

   BufferedReader in = new BufferedReader(new InputStreamReader(connect.getInputStream()));

   String decodedString;
   while ((decodedString = in.readLine()) != null) {
      System.out.println("w: " + decodedString);
   }
   in.close();
} catch(Exception e) {
   e.printStackTrace();
}

我发现了错误。CGI参数不正确。它应该是
key
,而不是
apikey
。但仍然奇怪的是,您得到了一个未记录的响应代码