Специальные символы создают проблемы с коммуникацией веб-сервиса REST - PullRequest
1 голос
/ 28 апреля 2011

Я пытаюсь опубликовать JSON-объект на веб-сервисе REST из приложения Android.Все работает нормально, пока я не добавлю специальные символы, такие как å, ä, ö.

JSONObject absenceObject = new JSONObject();
absenceObject.put(INFO_DESCRIPTION, "åka pendeltåg");
StringEntity entity = new StringEntity(absenceObject.toString());
httpPost.setEntity(entity);
httpPost.setHeader("Accept", "application/json";character);
httpPost.setHeader("Content-type", "application/json;charset=UTF-8");
HttpResponse response = httpclient.execute(httpPost);

Если я напечатаю absenceObject.toString() и скопирую результат в обычный клиент отдыха, он тоже будет работать.

Ответы [ 4 ]

9 голосов
/ 28 апреля 2011

Попробуйте указать нужный набор символов в конструкторе StringEntity:

StringEntity entity = new StringEntity(absenceObject.toString(), "UTF-8");
0 голосов
/ 13 апреля 2016
byte[] buf = body.getBytes(HTTP.UTF_8);
wr.write(buf, 0, buf.length);

Попробуйте, это будет работать.

0 голосов
/ 04 октября 2013

Re: ответ Марка

Попробуйте указать нужную кодировку в конструкторе StringEntity:

StringEntity entity = new StringEntity(absenceObject.toString(), "UTF-8");

Обратите внимание, что установка charset после конструктора не работает для меня, т.е.

entity.setContentEncoding("UTF-8");

Я должен был сделать, как сказал Марк, и установить его в конструкторе.

Michael

0 голосов
/ 28 апреля 2011

Если вы контролируете оба конца канала, вы можете закодировать текст REST, как показано здесь Кодирование / декодирование параметров пути REST

...