在Android中使用httpUrlConnection发送授权头信息

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。我只想使用HttpURLConnection,如果我能让它工作,因为Google的Android开发人员表示他们将把所有精力放在HttpURLConnection上。

谢谢。

1个回答

2

没有问题。大多数标题将在服务器上以HTTP_为前缀访问,但Content-Type被特殊处理。Android不会更改它,映射发生在服务器上。将其映射为大写是标准的(标题的大小写不重要),替换“ - ”为“ _ ”也是标准的。

请参阅CGI规范


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接