Как отправить более одного параметра в тело запроса в запросе POST?CXF JAXRS - Как выполнить POST более одного параметра
@POST
@Consumes("multipart/form-data")
@Produces("application/json")
public String addForm1(@FormParam("i1") Integer i1, @FormParam("i2") Integer i2);
Приведенный выше код возвращает HTTP 415.
Замена @FormParam
с @Multipart
Resource method has more than one parameter representing a request body
приводит к ошибке, как показано ниже.
SEVERE: Resource method service.rs.TestService.postData2 has more than one parameter representing a request body
Exception in thread "main" org.apache.cxf.jaxrs.client.ClientWebApplicationException: Resource method service.rs.TestService.postData2 has more than one parameter representing a request body
at org.apache.cxf.jaxrs.client.ClientProxyImpl.reportInvalidResourceMethod(ClientProxyImpl.java:546)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.getParametersInfo(ClientProxyImpl.java:214)
at org.apache.cxf.jaxrs.client.ClientProxyImpl.invoke(ClientProxyImpl.java:138)
at $Proxy20.postData2(Unknown Source)
at service.TestServiceClient.main(TestServiceClient.java:82)
Кроме того, что мне нужно сделать для того, чтобы пройти несколько сложных типов, таких как List<Map<String, String>>' or 'List<MyNestedCustomObject>
в методе POST? Я могу передать такой параметр с помощью JAXB
и аннотировать его @XmlJavaTypeAdapter
, но я думаю, что это не работает в случае передачи нескольких параметров? Должен ли я определять своих собственных читателей тела сообщений & авторов? Любой пример кода был бы полезен.
Благодаря
Удаление '@ Consumes' помог. Однако я понял, что мне нужно передать параметры '@ Multipart', поскольку мои параметры не просты. Мне нужны POST 2 params этих типов: 1. «Список <Карта>' и 2. 'MyCustomObject'. Передача 1 такого параметра работает отлично (я определил 'XmlJavaTypeAdapter' для' Map 'и аннотировал' MyCustomObject' с '@ XmlRootElement'). Но когда я передаю оба параметра, он бросает 'имеет более одного параметра, представляющего ошибку тела запроса. Я попробовал 'multipart/mixed' и' multipart/related' для '@ Consumes' и отмеченные параметры с помощью' @ Multipart'. Оцените быструю помощь. –
domino
@domino Хм, вы выходите за пределы области, которую я знаю достаточно хорошо, чтобы напрямую посоветовать. http://cxf.apache.org/docs/jax-rs-multiparts.html говорит, что используйте '@ Multipart' _or_ подпись' List '. Какую версию CXF вы используете? –
Поскольку я не имею дело с файлами/вложениями как таковыми, я попробовал '@ Multipart'. Будет проверять, может ли 'List' любая помощь. Я использую 2.5.2. На этой странице ** указаны ** примеры, которые, по-видимому, предполагают, что они должны быть прямолинейными для нескольких параметров POST с помощью '@ Multipart'. Наверное, я что-то упускаю. –
domino