/ / Вимкнути постачальника Джерсі за запитом - java, jersey, gson, jsr311

Вимкнути провайдера Джерсі на запит - java, jersey, gson, jsr311

На даний момент я зареєстрував Провайдер Gson що правильно є використовується, коли мій запит споживає або створює json.

Проблема полягає в тому, що у мене є запит, якому потрібні дані розміщення як або a байт [], InputStream, Reader або String.

Причина, по якій мені потрібні "необроблені" дані, полягає в тому, що у мене є якийсь сторонній код, де він розраховує на власну десериалізацію.

Незалежно від того, який із цих чотирьох типів я вказую свій метод Post, GsonReader скаржиться і це справедливо.

Очікували, що рядок, але BEGIN_OBJECT

Залежно від типу існує інша помилка, але все зводиться до той факт, що я не хочу, щоб цей постачальник / MessageBodyReader запускався.

Крім того, я не маю контролю над заголовками Accept і Content для розміщених даних. Вони будуть application / json.

Відповіді:

1 для відповіді № 1

Ви можете "змінити" заголовки типу accept / contentзапиту у фільтрі. Отже, якщо ви можете будь-яким чином визнати, що для цього запиту ви не хочете використовувати GSON, ви можете написати ContanerRequestFilter, який змінює заголовки.

Якщо використання постачальника GSON залежить від методу,запит отримує відповідність, ви можете реалізувати ResourceFilterFactory, який застосовує (повертає) ContainerRequestFilter (який змінює заголовок типу вмісту на щось інше, ніж json), лише для відповідних методів (ви навіть можете ввести власну анотацію, анотувати такі методи з нею та у resourcefilterfactory повертає containerrequestfilter лише в тому випадку, якщо переданий йому метод анотований цією анотацією).

Ось відповідні посилання: