Я хочу розмістити Список клієнтів у 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:
Підсумок: 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"}]