У меня проблема: сделать http-пост на Android с немецким «umlaute» äöü. Я передаю объект json методу ниже и выполняю возвращенный ClientResource с сообщением и объектом запроса в возвращенном ответе клиента. Когда я хочу опубликовать что-то вроде { "foo": "bär" }, HttpClient отправляет что-то вроде { "foo": "b√§r" }.
Не знаю почему. Что я делаю не так.
public static ClientResource newPostRequest(Context context, String urn,
JSONObject form) throws MissingAccessTokenException {
ClientResource resource = new ClientResource(uri + urn);
StringRepresentation sr = new StringRepresentation(form.toString());
sr.setMediaType(MediaType.APPLICATION_JSON);
resource.getRequest().setEntity(sr);
return resource;
}
Обновить
Я использовал http-клиент Android по умолчанию (который, как я полагаю, является http-клиентом apache) и получил ту же ошибку. Так что проблема может быть здесь. Я пытаюсь реализовать другой парсер json (в настоящее время gson) и (если возможно) другой http-клиент. Вернуться позднее...
Обновить
Гсон не проблема. Я добавил строку json в StringRepresentation, и ничего не изменилось.
ОТВЕТ
Ну, это странно. Может быть, кто-то может прояснить это для меня. Я всегда спрашивал себя, почему используется √§, и понял, что перевод utf-8 ä приводит к √§. Очевидно, мой телефон Android не использовал макроман, но мой Mac использовал. Поэтому я изменил кодировку текстового файла в eclipse, перезапустил eclipse и сервер tomcat, и это сработало. Тем не менее монитор TCP / IP в eclipse использует mac roman, который выглядит по-прежнему неправильно. Таким образом, это была проблема с моим сервером, а не с рестлет-клиентом на андроиде. Я просто не мог этого увидеть, потому что монитор TCP/IP все закодировал в макромане.