POST на службу службы REST службы Джерси 415 Неподдерживаемый тип носителя

Я использую веб-приложение JAX-RS с Джерси и Tomcat. Получить запросы в порядке, однако, когда я пытаюсь опубликовать JSON, я получаю статус HTTP 415 – Unsupported Media Type.

Вот мой простой HelloWorld.java:

package service; import javax.ws.rs.*; @Path("hello") public class HelloWorld { @GET @Produces("text/plain") public String get() { return "hello world"; } @POST @Consumes("application/json") public String post(JS input) { return input.hello; } public static class JS { public String hello; } } 

Вот запрос, который я пытаюсь использовать в Postman (с заголовком «application / json»):

введите описание изображения здесь Вот макет проекта с библиотеками: введите описание изображения здесь

Я использую:

  • Java 7 x64
  • Джерси 2.17
  • Tomcat 7.0.62 x64

Благодаря!

4 Solutions collect form web for “POST на службу службы REST службы Джерси 415 Неподдерживаемый тип носителя”

Распределение Джерси не поставляется с поддержкой JSON / POJO. Вам нужно добавить зависимости / банки.

Добавьте все эти

  • Джерси-медиа-JSON-ДЖЕКСОН-2,17
  • ДЖЕКСОН-jaxrs-JSON-провайдер 2.3.2
  • ДЖЕКСОН-kernel-2.3.2
  • ДЖЕКСОН-DataBind-2.3.2
  • ДЖЕКСОН-аннотаций-2.3.2
  • ДЖЕКСОН-jaxrs основание 2.3.2
  • ДЖЕКСОН-модуль-JAXB-аннотаций-2.3.2
  • джерси-сущность-фильтрация-2,17

С Maven ниже подтяните все вышеперечисленное в

  org.glassfish.jersey.media jersey-media-json-jackson 2.17  

Для любых будущих читателей, не использующих Jersey 2.17 (и используя банки непосредственно вместо Maven), вы можете пойти здесь, чтобы найти версию, которую вы используете, и посмотреть, какие транзитивные версии зависимостей вам нужны. Текущая версия этой зависимости от Джерси использует Jackson 2.3.2. Это главное, что нужно искать.

Проверьте свой тип контента REST. Он должен быть contentType: ‘application / json’, если вы передаете json-данные classу POJO.

Прошли многие ответы как на этой странице, так и на других, но безрезультатно. Это действительно сработало для меня:

МЕТОД 1: Вместо передачи JSONObject качестве параметра ресурсного метода достаточно передать String . Возьмите String и создайте JSONObject с ней, а затем вы можете использовать ее в своем коде. Вот так,

  @Path("/people") @POST @Consumes(MediaType.APPLICATION_JSON) @Produces(MediaType.APPLICATION_JSON) public Response doGetperson(String jsonRequest) { try { JSONObject requestedJSON = new JSONObject(jsonRequest); //So now you can use requestedJSON object created to do your stuff return Response.ok("{\"name\":" + requestedJSON.getString("user") + "}").build(); } catch (Exception ex) { return Response.ok("{ \"name\":\"\"}").build(); } } 

СПОСОБ 2:

Добавление этой зависимости по состоянию на сентябрь 2017 года :

   org.glassfish.jersey.media jersey-media-moxy 2.26  

Ссылка здесь

Я думаю, что вы отправляете запрос, работает правильно, но ваш браузер / почтальон не может разобрать ответ, полученный от службы. Он возвращает обычный текст, и почтальон ждет json. Добавьте Produce аннотацию к вашему веб-сервису и установите его в json. Я также предлагаю вам проверить с помощью Fiddler2, чтобы увидеть точную информацию, проходящую через провод.

  • Отключить язык приложений гипертекста (HAL) в JSON?
  • Джерси с Struts2
  • Как реализовать безопасный REST API с node.js
  • В чем разница между текстом / xml vs application / xml для ответа webservice
  • REST с полной привязкой данных Spring и Jackson
  • Каковы наилучшие / распространенные глаголы и действия URL-адреса RESTful?
  • Как установить заголовок Content-Type для запроса HttpClient?
  • В чем разница между «Запросить полезную нагрузку» и «Данные формы», как показано на вкладке «Инструменты разработчика Chrome».
  • Обработка исключений службы REST для Spring Boot
  • Соединение не может быть выполнено, потому что целевая машина активно отказалась от него 127.0.0.1:3446
  • Как решить maven 2.6 зависимость плагина ресурса?
  • Interesting Posts

    Какой правильный флаг autoConnect в connectGatt BLE?

    Анонимный метод в вызове Invoke

    Значение ‘const’ является последним в объявлении функции classа?

    Django: Как перенаправить сообщение и передать данные сообщения

    Wifi пароль VS MAC-фильтрация – с точки зрения скорости и безопасности

    Новая строка в атрибуте string

    Пользовательский агент Android HTTP

    Должен ли я всегда отключать обработчики событий в методе Dispose?

    Управление штриховой длиной штриха и расстоянием между штрихами

    Как проверить наличие ошибок в перегрузке оператора ‘==’ без бесконечной рекурсии?

    Как сделать резервную копию Windows 8?

    Не удается уловить событие нажатия кнопки кнопки панели инструментов

    Установка Visual Studio 2010 (любая версия) устанавливает только 2 файла в каталоге заголовков C ++

    В VirtualBox не удается получить максимальное разрешение экрана для гостевой ОС

    Строковый вывод Unicode C #

    Давайте будем гением компьютера.