2017-04-07 132 views
0

我很努力使用HttpURLConnection成功發送帶有授權頭的GET請求。返回錯誤代碼400。HttpURLConnection發送頭授權

我成功使用OKHttpClient,但請求不要使用任何依賴項。

這裏是我的代碼:

public static String GETReqUserProfiles() throws IOException { 

    URL url = new URL(UrlString); 
    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); 

    urlConnection.setDoOutput(true); 
    urlConnection.setRequestMethod("GET"); 
    urlConnection.setRequestProperty("Content-Type", "application/" + "json"); 
    urlConnection.setRequestProperty("authorization", "Bearer " + MANAGEMENT_TOKEN); 

    urlConnection.connect(); 

    if (urlConnection.getResponseCode() != 200) { 
     throw new RuntimeException("Failed : HTTP error code : " 
       + urlConnection.getResponseCode()); 
    } 

    String assembledOutput = ""; 

    BufferedReader responseBuffer = new BufferedReader(new InputStreamReader(
      (urlConnection.getInputStream()))); 

    String output; 
    System.out.println("Output from Server:\n"); 
    while ((output = responseBuffer.readLine()) != null) { 
     System.out.println(output); 
     assembledOutput = assembledOutput + output; 
    } 

    urlConnection.disconnect(); 

    return assembledOutput; 
} 

編輯:

一切工作 -

的問題是:

urlConnection.setDoOutput(true); 

setDoOutput(真):聲明發送有請求的機構。 GET請求不需要主體,所以它可以設置爲false或註釋掉。相反,這用於POST,PATCH,PUT等...(需要身體的請求)。

還要注意:

urlConnection.setRequestMethod("GET"); 

並不需要進行特別聲明,如果發送一個GET請求(雖然我離開了可讀性的代碼)

我懷疑,如果包括setDoOutput( true)並且沒有指定請求方法,該方法將默認爲POST請求。

+0

把urlConnection.connect();在setRequestProperty – AbhayBohra

+0

嗨Abhay,謝謝你,我包括連接,仍然返回400 :( – ccdle12

回答

0

我爲此開發了一個庫,可以使用它。

https://github.com/kksingla/fetchjson

你可以在這裏查看代碼,如果你不想使用依賴

+0

沒有問題的朋友.. –

+0

嗨Kushaal我讀通過源代碼,它是有幫助的和類似的,但它似乎並沒有解決這個特殊問題。特別是我是否正確添加了授權頭文件(我試圖連接到auth0,並且我成功使用了OKHttpClient)有關爲什麼可能會返回400錯誤的任何想法? – ccdle12

+0

請檢查您的頭文件,因爲400代表錯誤的請求意味着:您在那裏放了一些錯誤的數據(通常是關鍵)。 –