我正在尝试在使用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) {
}
}
BTW“Content-Type”标题也被更改为CONTENT_TYPE。
为什么Android发送更改它,是否有任何方式让我以我想要的方式发送它。或者我在这里做错了什么?如果重要的话,我们在后端使用nginx和Rails。
请不要建议使用HttpClient。我只是想使用HttpURLConnection,如果我可以让它工作,因为谷歌的Android开发者说他们将把所有的努力都投入到HttpURLConnection。
谢谢。
答案 0 :(得分:2)
没有错。大多数标题都可以在前缀为HTTP_的服务器上访问,但Content-Type是专门处理的。 Android没有改变它,映射正在服务器上发生。映射到大写是标准的(标题的情况并不重要),将“ - ”替换为“_”。