2013-02-05 44 views
3

我想在使用HttpUrlConnection時設置「授權」標頭,但我在服務器上將它看作「HTTP_AUTHORIZATION」。在Android中使用httpUrlConnection發送授權標頭

這裏是我的代碼:

public static String doGet(String params, String accessToken) 
      throws MHNetworkException { 
     try { 
      URL url = new URL(getServerUrl()); 

      HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 
      conn.setRequestProperty("Content-Type", "application/json"); 
      conn.setRequestProperty("Authorization", "Token token=" 
        + accessToken); 
      conn.setRequestMethod("GET"); 

      int httpStatus = conn.getResponseCode(); 
      Log.v(tag, "httpStatus " + httpStatus); 

      if (httpStatus == 200) { 
       return MHIOUtil.getInputStreamAsString(conn.getInputStream()); 
      } 
     } catch (MalformedURLException me) { 

     } catch (IOException ioe) { 

     } 
    } 

BTW的 「內容類型」 標頭也被改爲CONTENT_TYPE。

爲什麼Android發送更改它,有什麼方法可以讓我以我想要的方式完全發送它。或者我在這裏做錯了什麼?如果有問題,我們在後端使用nginx和Rails。

請不要推薦使用HttpClient。我只是想使用HttpURLConnection,如果我可以使這個工作,谷歌的Android開發人員說,他們將把所有的努力在HttpURLConnection。

謝謝。

回答

2

沒有什麼錯。大多數頭文件都可以在前綴爲HTTP_的服務器上訪問,但Content-Type會被專門處理。 Android沒有改變它,映射發生在服務器上。映射到大寫是標準的(標題不重要),用「_」代替「 - 」也是標準的。

請參閱CGI specification

相關問題