/ / Помилка подання списку об’єктів до апаш-cxf jax-rs (REST) ​​- json, cxf, jax-rs

Помилка при поданні списку об'єктів до служби apache-cxf jax-rs (REST) ​​- json, cxf, jax-rs

Я хочу розмістити Список клієнтів у JSON таким чином:

@POST
@Path("/addCustomers/")
@Consumes(MediaType.APPLICATION_JSON)
public List<Customer> addCustomers(List<Customer> list){
logger.debug(list);
return list;
}

Request Header:
Content-Type: application/json

Request Body:
{"Customer":[{"id":2999,"name":"Som Awasthi"},{"id":3000,"name":"Arnav Awasthi"}]}

Response: "415: Unsupported Media Type" error.

Введення цього запиту те саме, що я отримав у списку викликів клієнтів, який полягає в наступному:

@GET
@Path("/listCustomers")
public List<Customer> listCustomers(){
List<Customer> list = new ArrayList<Customer>();
list.add(new Customer("Som Awasthi", 2999L));
list.add(new Customer("Arnav Awasthi", 3000L));

return list;
}

Тож я очікував, що вхід повинен дати мені об'єкт List. Але це дає мені непідтримувану помилку типу медіа.

З повагою, Арнав

Відповіді:

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

Нарешті я знайшов рішення за допомогою однієї дискусії в nabble:

http://cxf.547215.n5.nabble.com/How-to-submit-JSON-data-as-request-body-in-Apache-CXF-jax-rs-REST-td4361669.html

Підсумок: Apache-CXF 2.3.0 і Jettison 1.2 не підтримують це. Тому мені довелося змінити версію на 2.3.4, і вона спрацювала.

Зразок застосування: https://bitbucket.org/arnavawasthi/apache-cxf-jaxrs-spring

Сподіваюся, що це допоможе іншим, хто стикається з тією ж проблемою.

Спасибі, Арнав


0 для відповіді № 2

Спробуйте додати до свого запиту заголовок Accept:

Accept: application/json

Крім того, переконайтеся, що ваш запит є безумовно POST.

EDIT:

Отже, json, який ви передаєте, - це об'єкт із масивом всередині. Спробуйте передати це в масиві клієнтських об'єктів:

[{"id":2999,"name":"Som Awasthi"},{"id":3000,"name":"Arnav Awasthi"}]