2012-12-27 30 views
1

我在編程時遇到了一些困難,請求主體的含義很混亂。它總是返回400個響應碼。請幫助我。谷歌安全瀏覽java查找api代碼

String baseURL="https://sb-ssl.google.com/safebrowsing/api/lookup"; 

String arguments = ""; 
arguments+=URLEncoder.encode("client", "UTF-8")+"="+URLEncoder.encode("demo-app", "UTF-8")+"&"; 
arguments+=URLEncoder.encode("apikey", "UTF-8")+"="+URLEncoder.encode("apikey", "UTF-8")+"&"; 
arguments+=URLEncoder.encode("appver", "UTF-8")+"="+URLEncoder.encode("1.5.2", "UTF-8")+"&"; 
arguments+=URLEncoder.encode("pver", "UTF-8")+"="+URLEncoder.encode("3.0", "UTF-8")+"&"; 
arguments+=URLEncoder.encode("post_req_body", "UTF-8")+"="+URLEncoder.encode("2\nhttp://www.google.com\nhttp://www.facebook.com", "UTF-8"); 

String query = arguments; 

    System.out.println("Sending POST request - " + query); 
// Construct the url object representing cgi script 
    URL url = new URL(baseURL); 

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

    // 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 (query); 
    pout.close(); 
+1

你有沒有在谷歌註冊並申請API密鑰?您的代碼不包含有效的應用程序名稱,也不包含有效的API密鑰。 – Codo

+0

爲了發佈數據,您需要將其轉換爲[HttpURLConnection](http://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.html)並調用[setRequestMethod](http ://docs.oracle.com/javase/7/docs/api/java/net/HttpURLConnection.html#setRequestMethod%28java.lang.String%29) – McDowell

回答

2

您的要求是錯誤的。如果使用POST請求,則參數客戶apikeyapiverPVER應該是URL的一部分。

請求主體應該只包含要檢查的URL(加上第一行的URLS數量)。

因此,它可能看起來像這樣:

String baseURL="https://sb-ssl.google.com/safebrowsing/api/lookup"; 

String arguments = ""; 
arguments + =URLEncoder.encode("client", "UTF-8") + "=" + URLEncoder.encode("myapp", "UTF-8") + "&"; 
arguments + =URLEncoder.encode("apikey", "UTF-8") + "=" + URLEncoder.encode("12341234", "UTF-8") + "&"; 
arguments + =URLEncoder.encode("appver", "UTF-8") + "=" + URLEncoder.encode("1.5.2", "UTF-8") + "&"; 
arguments + =URLEncoder.encode("pver", "UTF-8") + "=" + URLEncoder.encode("3.0", "UTF-8"); 

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

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

// 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(); 
+0

我是一個綠色的手。非常感謝你! – user1932196

+0

爲了發送一個URL到谷歌API,我們還需要做些什麼,並接受一個安全或不安全的答案?我認爲第一部分是用上面的代碼完成的,接下來我們需要等待答案? – Giannis