【发布时间】:2015-07-31 21:33:10
【问题描述】:
我有一个 CXF Web 服务,其中只有一个参数应该在有效负载上发送。所有其他参数都在 URL 上发送:
参数类:
class Book
{
String name;
String author;
//getters, setters
}
服务:
@Post
@Path("/addBook/{roomId}/{bookId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@WebResult(name = "addBookResponse")
public LibraryResponse addBook(
@PathParam("roomId") @WebParam(name = "roomId") String roomId,
@PathParam("bookId") @WebParam(name = "bookId") String bookId,
@WebParam(name = "book") Book book);
我在 REST 客户端中发送的有效负载:
{
"name":"War and Peace",
"author":"Lev Tolstoy"
}
在这个简单的情况下它可以工作。 :)
现在,我有另一个 CXF Web 服务方法,其中包含两个应该在有效负载上发送的参数:
@PUT
@Path("/replaceBook/{roomId}/{bookId}")
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
@WebResult(name = "replaceBookResponse")
public LibraryResponse replaceBook(
@PathParam("roomId") @WebParam(name = "roomId") String roomId,
@PathParam("bookId") @WebParam(name = "bookId") String bookId,
@WebParam(name = "originalBook") Book originalBook,
@WebParam(name = "newBook") Book newBook);
我应该发送什么作为有效负载?我已尝试发送以下有效负载,但没有成功。
[
{
"name": "The Da Vinci Code",
"author": "Dan Brown"
},
{
"name": "War and Peace",
"author": "Lev Tolstoy"
}
]
大概如下是如何做到的:
https://stackoverflow.com/a/13253070/784980
https://cwiki.apache.org/confluence/display/CXF20DOC/JAX-RS+Multiparts
https://ext2xhb.wordpress.com/2011/06/08/using-cxf-attachment-safely/
【问题讨论】:
标签: java web-services rest apache-camel cxf