2016-07-26 2 views
0
URL url = new URL(binpath); 
URLConnection connection = url.openConnection(); 
InputStream is = connection.getInputStream(); 
String mt = connection.getContentType(); 
ResponseBuilder response = Response.ok((Object) is, mt); 
response.header("Content-Disposition","attachment; filename=" + binpath.substring(binpath.lastIndexOf('/') + 1, binpath.length())); 
return response.build(); 

У меня есть служба REST с указанным выше кодом (Response). При вызове сохраняется файл с текстовыми значениями, такими как «file1 addsagfdfgfd»REST Файл ответов на строку

Когда я вызываю это из другого класса и использую Response, чтобы получить контент следующим образом, он не дает мне содержания ответа. Она возвращает

[email protected] 
String rp = file1Response.toEntity().toString(); 

Как я могу получить строковое значение из остальных ответов (который является файл) или как я могу изменить код, чтобы вернуть строку?

+0

Не могли бы вы опубликовать весь метод? – Matt

ответ

0

Я бы проанализировал файл на String или создал собственный класс, содержащий всю информацию о файле и его содержимом. Вероятно, у вас есть проблема с MessageBodyWriter.

Если вы преобразуете свой файл в строку, вы можете легко поместить его в тело ответа. То же самое относится к самоцензурному классу. Вы можете контролировать, какие поля будут отправляться с телом, аннотируя поля, которые вы не хотите отправлять с помощью @XmlTransient.

Я предполагаю, что MessageBodyWriter не может обрабатывать InputStream. Вы когда-нибудь проверяли код состояния HTTP? Вероятно, это будет 500 Internal Server Error, и в ваших журналах вы увидите что-то вроде «MessageBodyWriter не найден для типа InputStream».

Также вы должны написать весь код метода в своих вопросах, предоставляя все переменные, которые вы используете внутри этого метода.

Смежные вопросы