Làm cách nào để gửi nhiều thông số trong phần yêu cầu trong yêu cầu POST?CXF JAXRS - Cách ĐĂNG NHẬP nhiều thông số
@POST
@Consumes("multipart/form-data")
@Produces("application/json")
public String addForm1(@FormParam("i1") Integer i1, @FormParam("i2") Integer i2);
Trên mã trả về HTTP 415.
Thay @FormParam
với @Multipart
kết quả trong Resource method has more than one parameter representing a request body
lỗi, như hình dưới đây.
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)
Ngoài ra, tôi cần phải làm gì để chuyển nhiều loại phức tạp như List<Map<String, String>>' or 'List<MyNestedCustomObject>
trong phương thức POST? Tôi có thể chuyển thông số như vậy bằng cách sử dụng JAXB
và chú thích nó bằng @XmlJavaTypeAdapter
, nhưng tôi đoán điều đó không hoạt động trong trường hợp truyền nhiều thông số? Tôi có phải được yêu cầu xác định độc giả của người đọc tin nhắn của riêng mình & nhà văn không? Bất kỳ mã mẫu nào cũng hữu ích.
Cảm ơn
Loại bỏ '@ Consumes' giúp. Tuy nhiên, tôi nhận ra rằng tôi cần truyền các tham số '@ Multipart' vì các tham số của tôi không đơn giản. Tôi cần phải POST 2 params của các loại: 1. Danh sách > 'và 2.' MyCustomObject'. Việc truyền 1 tham số như vậy hoạt động tốt (tôi đã định nghĩa 'XmlJavaTypeAdapter' cho' Bản đồ 'và chú giải' MyCustomObject' với '@ XmlRootElement'). Nhưng khi tôi vượt qua cả hai tham số, nó ném 'có nhiều hơn một tham số đại diện cho một lỗi body' yêu cầu. Tôi đã thử 'multipart/mixed' &' multipart/related' cho '@ Consumes' và các tham số được đánh dấu bằng' @ Multipart'. Đánh giá cao sự trợ giúp nhanh chóng. –
domino
@domino Hmm, bạn đang ở ngoài khu vực mà tôi biết đủ để tư vấn trực tiếp. http://cxf.apache.org/docs/jax-rs-multiparts.html nói để sử dụng '@ Multipart' _or_ một chữ ký của' Danh sách '. Bạn đang sử dụng phiên bản CXF nào? –
Vì tôi không xử lý bất kỳ tệp/tệp đính kèm nào như vậy, tôi đã thử '@ Multipart'. Sẽ kiểm tra xem 'Danh sách' có thể giúp được gì không. Tôi đang sử dụng 2.5.2. Có ** là ** ví dụ trên trang đó có vẻ gợi ý rằng nó nên thẳng về phía trước để POST nhiều tham số bằng cách sử dụng '@ Multipart'. Tôi đoán tôi đang thiếu một cái gì đó. –
domino