免责声明:我的确在详细搜索这个问题的答案,是的,我确实发现了另一个问题: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