Гость
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / REST-сервис возвращает файл в неправильной кодировке / 10 сообщений из 10, страница 1 из 1
24.12.2021, 14:27
    #40122748
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
"Файл" не существует физически где-то на диске, а представляет собой строку, передаваемую в Response.

Код: java
1.
2.
3.
4.
5.
        Response responseB = Response.ok(getFileResponse.getFile().getFileData(), MediaType.APPLICATION_OCTET_STREAM)
                    .header("content-disposition","attachment; filename = " + getFileResponse.getFile().getFileName())
                    .header("Content-Type", MediaType.APPLICATION_OCTET_STREAM + "; charset=windows-1251").build();
   
        return responseB; 



Со строкой, как видно в дебагере(вложение), до момента возврата из метода всё в порядке.



Но на выходе в SoapUI я получаю
автор1^9.0^0000000309^Мамаджанова^Гулнорахон^Гулнорахон^2^G.^MAMADZHANOVA^1970-02-25^Узбекистан, Андижан^860^10^FA 1847972^2021-01-19^MIA 3411^^^^^^^^190000, Россия, , Санкт-Петербург г., 9/ -6, Стахановцев ул.^^+78123180904^^+79533610215^6.29^40820810751002267978
2^9.0^0000000522^Самсалиева^Калбу^Калбу^2^KALBU


От того , что указано в аннотации @Produces это не зависит, как и от самого её наличия.
...
Рейтинг: 0 / 0
24.12.2021, 14:38
    #40122751
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
XEugene
Со строкой, как видно в дебагере(вложение), до момента возврата из метода всё в порядке.

Нет не всё. Она явно юникодная. И перекодируется в UTF-8 при отсылке. Но ты, вредитель, утверждаешь в своих заголовках, что она в Windows-1251. А наивный SoapUI тебе верит.
...
Рейтинг: 0 / 0
24.12.2021, 14:48
    #40122757
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
Dimitry Sibiryakov
XEugene
Со строкой, как видно в дебагере(вложение), до момента возврата из метода всё в порядке.

Нет не всё. Она явно юникодная

БД в windows-1251
...
Рейтинг: 0 / 0
24.12.2021, 15:00
    #40122763
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
Dimitry Sibiryakov
XEugene
Со строкой, как видно в дебагере(вложение), до момента возврата из метода всё в порядке.

Нет не всё. Она явно юникодная. И перекодируется в UTF-8 при отсылке. Но ты, вредитель, утверждаешь в своих заголовках, что она в Windows-1251. А наивный SoapUI тебе верит.


Но я попробовал указать
Код: java
1.
MediaType.APPLICATION_OCTET_STREAM + "; charset=utf8")


Результат тот же.
...
Рейтинг: 0 / 0
25.12.2021, 02:55
    #40122929
Dmitry.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
XEugene,

какие хедеры ты получаешь в soapui ?

должно быть utf-8 а не utf8

думаю charset не валидный параметр для application/octet-stream - попробуй text/plain
...
Рейтинг: 0 / 0
27.12.2021, 10:36
    #40123306
13-й Пилигрим
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
XEugene, персональные данные все-таки лучше маскировать.
...
Рейтинг: 0 / 0
27.12.2021, 11:00
    #40123311
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
Попробовал поменять octet-stream на text-plain. Нет, не помогло.

Dmitry.
XEugene,

какие хедеры ты получаешь в soapui ?


авторHTTP/1.1 200 OK

X-Powered-By=Servlet/3.1

Content-Type=application/octet-stream

Content-Disposition=attachment; filename = ID6755122793.txt

Date=Mon, 27 Dec 2021 07:54:47 GMT

Content-Language=en-US

Transfer-Encoding=chunked
Если text/plain, то соответственно Content-Type= text/plain
...
Рейтинг: 0 / 0
27.12.2021, 19:24
    #40123441
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
А какой тип возвращает getFileData() ?
...
Рейтинг: 0 / 0
28.12.2021, 16:40
    #40123656
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
mayton
А какой тип возвращает getFileData() ?


Сейчас возвращает String. На тот момент, когда впервые появилась эта проблема, возвращал byte[].

Сейчас уже стало понятно, что кодировка поломалась после переезда на новый сервер. AS WebSphere, и на старом, и на новом.
...
Рейтинг: 0 / 0
30.12.2021, 10:57
    #40124118
XEugene
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
REST-сервис возвращает файл в неправильной кодировке
Нужно было, оказывается, поставить JAX-RS provider 1.1
2.0, который там стоял, не умеет работать с windows-1251
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / REST-сервис возвращает файл в неправильной кодировке / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]