3

HttpUrlConnection の使用中に「Authorization」ヘッダーを設定しようとしていますが、サーバー上では「HTTP_AUTHORIZATION」と表示されます。

これが私のコードです:

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) {

        }
    }

ところで、「Content-Type」ヘッダーも CONTENT_TYPE に変更されています。

なぜAndroidはそれを変更して送信していますか?私が望む方法で正確に送信する方法はありますか? それとも、ここで何か間違ったことをしていますか? 問題があれば、バックエンドで nginx と Rails を使用しています。

HttpClient の使用はお勧めしません。Google の Android 開発者が HttpURLConnection に全力を注ぐと述べたので、これを機能させることができれば HttpURLConnection を使用したいだけです。

ありがとうございました。

4

1 に答える 1

2

何も悪いことはありません。ほとんどのヘッダーは、接頭辞HTTP_が付いたサーバーでアクセスできますが、Content-Typeは特別に扱われます。Androidはそれを変更しておらず、マッピングはサーバー上で行われています。「-」を「_」に置き換えるのと同様に、大文字へのマッピングは標準です(ヘッダーの大文字小文字は重要ではありません)。

CGI仕様を参照してください。

于 2013-02-06T00:16:44.733 に答える