在Android中使用httpUrlConnection发送授权标头

我正在尝试在使用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,如果我可以让它工作,因为谷歌的Android开发者说他们将把所有的努力都投入到HttpURLConnection中。

谢谢。

没有任何错误。 大多数标题都可以在前缀为HTTP_的服务器上访问,但Content-Type是专门处理的。 Android没有改变它,映射正在服务器上发生。 映射到大写是标准的(标题的情况并不重要),将“ – ”替换为“_”。

请参阅CGI规范 。