2017-01-13 69 views
-1

我曾嘗試它的每一個問題在這裏,但我的代碼仍然返回400,爲每一個我嘗試做的請求,我沒有得到什麼,我做錯了。HttpURLConnection的POST返回400錯誤的請求

HttpURLConnection connection = null; 

InputStream in = null; 

try { 

    URL url = new URL(uri); 

    connection = (HttpURLConnection) url.openConnection(); 

    connection.setReadTimeout(10000); 
    connection.setConnectTimeout(20000); 
    connection.setRequestMethod("POST"); 

    connection.setRequestProperty("Content-type", "application/x-www-form-urlencoded"); 

    connection.setDoInput(true); 
    connection.setDoOutput(true); 

    String query = ""; 

    if (Validator.isNotNull(paramsMap) && !paramsMap.isEmpty()) { 

     Uri.Builder builder = new Uri.Builder(); 

     for (Map.Entry<String, String> entry : paramsMap.entrySet()) { 

      builder.appendQueryParameter(entry.getKey(), entry.getValue()); 
     } 

     query = builder.build().getEncodedQuery(); 
    } 

    if (!query.isEmpty()) { 

     OutputStream os = connection.getOutputStream(); 

     BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 

     writer.write(query); 
     writer.flush(); 
     writer.close(); 

     os.close(); 

    } 

    connection.connect(); 

    int status = connection.getResponseCode(); 

    if (status == 200) { 

     in = connection.getInputStream(); 
    } else { 
     in = connection.getErrorStream(); 
    } 

} finally { 

    connection.disconnect(); 
} 

return in; 
+0

你有權訪問遠程服務器上的API日誌嗎?建立連接看起來不錯,但不知道你應該怎麼來發送或您的API要求什麼,我不認爲有足夠的信息去。 –

+0

你明白約400狀態? – Loc

+0

@MichaelDodd它應該SE ND 3個參數,用戶名,電子郵件和grant_type,這也正是我與Uri.Builder做,我debbuged和它做對,我猜。 –

回答

1

我會嘗試得到它的工作使用一個單獨的工具(也有相當多的瀏覽器插件,讓你創建POST請求(郵差,HttpRequester等)使用其中的一個要弄清楚到底是什麼你需要POST才能使它工作,一旦你在其中一個工具中工作,你可以在你的Java代碼中做同樣的事情