Как отправить данные JSON в качестве тела запроса в Apache CXF jax-rs (REST) - PullRequest
6 голосов
/ 01 мая 2011

Я использую Apache-CXF для создания веб-служб REST и пытаюсь отправить форму.

Сервер:
Это мой метод, который должен получать данные json.

@POST
@Path("/addCustomer/")
@Consumes(MediaType.APPLICATION_JSON)

//{"Customer":{"name":"Some Name","id":6}}

public Customer addCustomer(Customer customer){

   logger.debug(customer);
   return customer;

}

Клиент: Я использую плагин REST Firefox для отправки запроса: Используя REST-клиент, я разместил следующий json в качестве тела запроса:

{"Customer":{"name":"Arnav Awasthi","id":6}}

Но я получаю "415: Unsupported Media Type".

Ответы [ 7 ]

4 голосов
/ 23 марта 2012

используйте restclient, плагин для fire fox и добавьте заголовки http как Accept: application / json, тип контента: application / json.

2 голосов
/ 28 сентября 2012

Извините за поздний ответ, но он может послужить другим.

Вы должны дважды проверить, чем аннотирован ваш класс Customer с помощью @XmlRootElement JAXB, поскольку Джексон нуждается в десериализации сообщения JSON.

2 голосов
/ 01 мая 2011

Вы должны найти способ сообщить firefox, чтобы установить тип контента для application / json.Ошибка указывает, что он отправляет что-то еще.

1 голос
/ 09 марта 2014

Я столкнулся с той же проблемой, используя CXF 2.7.4 с Jasckon 2.X.X. Но это было исправлено, когда я обновился до CXF 2.7.7. Или используйте Jackson 1.9.X с CXF 2.7.4.

1 голос
/ 16 января 2013

У меня была такая же ошибка некоторое время назад. Похоже, что основной причиной было исключение «Для класса запроса не найдено устройство чтения тела сообщения».

Согласно http://www.javatips.net/blog/2012/02/cxf-restful-tutorial Я добавил библиотеку jettison для решения этой проблемы.

0 голосов
/ 24 февраля 2015

У меня была такая же проблема. Решение состояло в том, чтобы удалить имя класса bean-компонента из строки json. В вашем случае, Json, который должен быть отправлен как тело,

{"name":"Arnav Awasthi","id":6}
0 голосов
/ 17 сентября 2013

Вы должны добавить пользовательские заголовки, чтобы сообщить клиенту, какие данные вы отправляете обратно, например: Имя заголовка: Тип заголовка содержимого: application / json

...