2015-07-02 6 views
1

Я работаю над программой, которая запрашивает 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(); 
} 

ответ

1

Я нашел ошибку. Параметр CGI был неправильным. Это должно было быть key, а не apikey. Тем не менее странно, что вы получаете недокументированный код ответа.

 Смежные вопросы

  • Нет связанных вопросов^_^