免責聲明:我的確在詳細搜索這個問題的答案,是的,我確實發現了另一個問題:https://stackoverflow.com/questions/10315728/how-to-send-parameters-as-formparam-to-webservice。但是,首先,這個問題是關於Javascript的問題,而我正在問Java,其次,它無論如何都沒有答案。所以在這個問題......如何從另一種方法將@FormParam傳遞給REST風格的服務?
隨着RESTful服務,傳遞@QueryParam
s轉換爲@GET
服務是相當容易的,因爲你可以變量名稱/值對簡單地附加在URL並用它來從內打到服務器程序。有沒有辦法用@FormParam
來做到這一點?
例如,假設我有以下的RESTful服務:
@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
*/
}
...讓我們說,我也有另一種方法在其他地方在我的計劃是這樣的:
public void updateValues(String comments) {
String userId = getUserId();
String deviceId = getDeviceId();
/*
* Send the information to the /processInfo service
*/
}
如何我可以在第二種方法中執行註釋掉的動作嗎?
NOTE:假設這些方法不在同一個類或包中。還要假定REST風格的服務託管在不同的服務器上,而不是您運行方法的計算機。因此,您必須必須訪問方法並以RESTful方式傳遞值。
謝謝你的幫助!
您可以通過表單參數是這樣,使用com.sun.jersey.api.representation.Form如下。 Form f = new Form(); f.add(「userId」,「foo」); f.add(「deviceId」,「bar」); f.add(「comments」,「Device」); // Fluent接口 service.path(「processInfo」)。accept(MediaType.APPLICATION_XML).post(String.class,f); –
太棒了!你能否在你的答案中加上這一點,並解釋最後一行?這一個:'service.path(「processInfo」)。accept(MediaType.APPLICATION_XML).post(String.class,f)'然後我會接受。 :) – asteri
具體來說,你正在調用'path()'的''service'對象是什麼? – asteri