Android客户端,使用Springs resttemplace和Apache公共HTTP客户端发出请求。android resttemplate + httpclient头文件编码问题
我正在对服务器,有时返回401错误,与http头字符串,“错误”,其中包含用户信息字符串。该字符串是与语言相关的,因此它可能包含斯堪的纳维亚字符。
该字符串在我的IOS应用程序中看起来很好,当我在Firefox RESTclient插件中检查它时也是如此。
但是,在我的Android应用程序中,我不能让我的生活得到正确的字符。如果有人能想到我可以使数据正确出来的方式,我将非常感激。
服务器发送内容类型的UTF-8,并在httpservletresponse上设置一个常规的.setHeader(),它设置我尝试检索的参数。
这是我在我的Android客户端resttemplate的创建(IVE尝试的大多数方法,你可以看到):
HttpClient httpClient = new HttpClient();
Credentials defaultcreds = new UsernamePasswordCredentials(msisdn, password);
httpClient.getState().setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT, AuthScope.ANY_REALM), defaultcreds);
httpClient.getParams().setSoTimeout(prefs.getServerTimeout());
httpClient.getParams().setConnectionManagerTimeout(3000);
httpClient.getParams().setContentCharset("utf-8");
httpClient.getParams().setCredentialCharset(prefs.getCredentialsEncoding());
httpClient.getParams().setHttpElementCharset("utf-8");
httpClient.getParams().setUriCharset("utf-8");
CommonsClientHttpRequestFactory requestFactory = new CommonsClientHttpRequestFactory(httpClient);
requestFactory.setReadTimeout(prefs.getServerTimeout());
RestTemplate restTemplate = new RestTemplate(requestFactory);
// Add message converters
List> mc = restTemplate.getMessageConverters();
MappingJacksonHttpMessageConverter json = new MappingJacksonHttpMessageConverter();
List supportedMediaTypes = new ArrayList();
supportedMediaTypes.add(MediaType.APPLICATION_JSON);
json.setSupportedMediaTypes(supportedMediaTypes);
mc.add(json);
restTemplate.setMessageConverters(mc);
// Set our specific error handler
restTemplate.setErrorHandler(new MyErrorHandler());
这是我的HTTP响应,从RESTClient实现在Firefox中复制,如果我跑了同样的要求有:
Status Code: 401 Unauthorized
Content-Length: 954
Content-Type: text/html;charset=utf-8
Date: Sat, 19 Jan 2013 23:53:10 GMT
ERROR: För att
Server: Apache-Coyote/1.1
WWW-Authenticate: Basic realm="rest"
2013-01-19
Mathias