Я работаю над программой, которая запрашивает Google Safe Browsing для определенных URL-адресов, но я получаю сообщение об ошибке, которое я не думаю, что мне нужно получить.Google Безопасный просмотр HTTP POST - 403 ответ
Я посылаю следующий запрос:
2
http://google.com
http://facebook.com
через POST в: https://sb-ssl.google.com/safebrowsing/api/lookup?client=api&apikey=[KEY]&appver=1.5.2&pver=3.1
Однако, я получаю 403 ответа.
Это то, что сказано в документации по HTTP POST ошибок подстановки:
Сервер генерирует следующие коды ошибок HTTP для запроса POST:
• 200: по крайней мере один из запрашиваемых URL-адреса являются сопоставляются либо в фишинговых, вредоносных или нежелательных списках программного обеспечения. Фактические результаты возвращаются через тело ответа.
• 204: НИКАКИЕ из запрошенных URL-адресов не совпадают с списками фишинга, вредоносного ПО или нежелательного программного обеспечения, и тело ответа не возвращается.
• 400: неверный запрос. Запрос HTTP был неправильно сформирован.
• 401: не авторизован. Ключ API не разрешен.
• 503: Service Unavailable - сервер не может обрабатывать запрос. Помимо обычных сбоев сервера, это также может указывать на то, что клиент был «дросселирован» для отправки слишком большого количества запросов.
Код ответа 403 не указан, но я получаю его.
Я проверил тройной ключ API и удостоверился, что API включен для моего проекта. Я использую ключ Server, но я также пробовал браузер.
Я тоже пытался сделать запрос 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();
}