Ok, так ив попробовал все, но спрашивать у StackOverflow ...Невозможно получить кодировку для работы с андроид клиента с resttemplate и JSON
Я пытаюсь выполнить REST вызов с некоторыми HTTP Params из Android с помощью httpclient и resttemplate для серверного контроллера Spring. Все мои шведские символы в конечном итоге на сервере как '\' u001A ...
настройки HttpClient и resttemplate код:
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().setContentCharset(prefs.());
httpClient.getParams().setCredentialCharset(prefs.getCredentialsEncoding());
CommonsClientHttpRequestFactory requestFactory = new CommonsClientHttpRequestFactory(httpClient);
RestTemplate restTemplate = new RestTemplate(requestFactory);
// Add message converters
List<HttpMessageConverter<?>> mc = restTemplate.getMessageConverters();
MappingJacksonHttpMessageConverter json = new MappingJacksonHttpMessageConverter();
List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
supportedMediaTypes.add(MediaType.APPLICATION_JSON);
json.setSupportedMediaTypes(supportedMediaTypes);
mc.add(json);
restTemplate.setMessageConverters(mc);
return restTemplate;
Я тогда подготовить httpentity с моим параметром:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add("myparam", "" + "å");
HttpEntity<String> entity = new HttpEntity<String>(headers);
я, наконец, сделать остальное вызова:
ResponseEntity<UserStatusTO> response = rest.exchange(url, HttpMethod.GET, entity,
MyResponseClass.class);
на сервере, у меня есть десериализатор Джексона и мои Метод весеннего контроллера выглядит следующим образом:
@RequestMapping(method = RequestMethod.GET, value = "/event/out", headers = "Accept=application/json", produces = {"application/xml;charset=UTF-8", "application/json;charset=UTF-8"})
public
@ResponseBody
UserStatusTO out(Authentication auth, @RequestHeader(value="myparam", required = false) String myparam) {
Все специальные символы в конечном итоге как \ u001a! Я пробовал массу вещей, перекодировал строки вручную клиент и сервер, никто не работал. Я пытался возиться с httpClient.getParams(). SetContentCharset(); httpClient.getParams(). SetUriCharset();
Ничего не удалось, насколько я мог судить.
У меня нет идей! Если у кого-то есть какие-либо данные, я буду очень благодарен. Благодаря!
для «MyParam» заголовка, где вы зубрежки в исключением å, ä: s и ö: s? – Jens
Ну, есть только один параметр, который имеет swedish символы. Я сократил свой пример, чтобы упростить его чтение, но в моем приложении есть поле, где пользователь может ввести заметку, которую я пытаюсь отправить на сервер ... Но место, где у меня есть «å», где i в моем коде помещается в текст из текстового поля – Mathias