KHUYẾN CÁO: Tôi đã tìm kiếm đầy đủ để có câu trả lời cho câu hỏi này, và có, tôi đã tìm thấy câu hỏi khác này: https://stackoverflow.com/questions/10315728/how-to-send-parameters-as-formparam-to-webservice. Nhưng trước hết, câu hỏi đó là hỏi về Javascript, trong khi tôi hỏi về Java, và thứ hai, nó vẫn chưa có câu trả lời. Vì vậy, đối với câu hỏi ...Làm cách nào để chuyển @FormParam sang dịch vụ RESTful từ một phương thức khác?
Với dịch vụ RESTful, hãy chuyển @QueryParam
vào dịch vụ @GET
khá dễ dàng, vì bạn có thể chỉ cần thêm các cặp tên/giá trị vào URL và sử dụng nó để truy cập máy chủ từ bên trong chương trình. Có cách nào để làm điều này với @FormParam
s không?
Ví dụ, giả sử tôi có dịch vụ RESTful sau:
@POST
@Produces("application/xml")
@Path("/processInfo")
public String processInfo(@FormParam("userId") String userId,
@FormParam("deviceId") String deviceId,
@FormParam("comments") String comments) {
/*
* Process stuff and return
*/
}
... và chúng ta hãy nói rằng tôi cũng có phương pháp khác ở một nơi khác trong chương trình của tôi như thế này:
public void updateValues(String comments) {
String userId = getUserId();
String deviceId = getDeviceId();
/*
* Send the information to the /processInfo service
*/
}
thế nào tôi có thể thực hiện hành động nhận xét trong phương pháp thứ hai không?
LƯU Ý: Giả sử các phương pháp này không nằm trong cùng một lớp hoặc gói. Cũng giả sử rằng dịch vụ RESTful được lưu trữ trên máy chủ khác nhau so với máy bạn đang chạy phương pháp của mình. Như vậy, bạn phải truy cập phương thức và chuyển các giá trị theo cách RESTful.
Cảm ơn sự giúp đỡ của bạn!
Bạn có thể vượt qua các tham số hình thức như thế này, sử dụng com.sun.jersey.api.representation.Form như sau. Form f = new Form(); f.add ("userId", "foo"); f.add ("deviceId", "bar"); f.add ("nhận xét", "Thiết bị"); // Giao diện thông thạo service.path ("processInfo"). Chấp nhận (MediaType.APPLICATION_XML) .post (String.class, f); –
Thật tuyệt vời! Bạn có thể thêm điều đó vào câu trả lời của bạn và giải thích dòng cuối cùng nhiều hơn một chút không? Điều này: 'service.path (" processInfo "). Chấp nhận (MediaType.APPLICATION_XML) .post (String.class, f)' Sau đó, tôi sẽ chấp nhận. :) – asteri
Cụ thể, đối tượng 'service' mà bạn đang gọi' path() 'là gì? – asteri