2013-02-05 46 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

相关问题