Java 如何从另一个方法将@FormParam传递给RESTful服务?

Java 如何从另一个方法将@FormParam传递给RESTful服务?,java,web-services,rest,Java,Web Services,Rest,免责声明:我确实仔细搜索了这个问题的答案,是的,我确实找到了另一个问题:。但首先,这个问题是关于Javascript的,而我是关于Java的,其次,它没有答案。关于这个问题 使用RESTful服务,将@QueryParam传递到@GET服务中相当容易,因为您可以简单地将变量名称/值对附加到URL,并使用它从程序中访问服务器。有没有办法也使用@FormParams来实现这一点 例如,假设我有以下RESTful服务: @POST @Produces("application/xml") @Path(

免责声明:我确实仔细搜索了这个问题的答案,是的,我确实找到了另一个问题:。但首先,这个问题是关于Javascript的,而我是关于Java的,其次,它没有答案。关于这个问题

使用RESTful服务,将
@QueryParam
传递到
@GET
服务中相当容易,因为您可以简单地将变量名称/值对附加到URL,并使用它从程序中访问服务器。有没有办法也使用
@FormParam
s来实现这一点

例如,假设我有以下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
     */

}
如何在第二种方法中执行注释掉的操作

注意:假设这些方法不在同一类或包中。还假设RESTful服务托管在与运行方法的机器不同的服务器上。因此,必须以RESTful方式访问该方法并传递值


谢谢你的帮助

使用@FormParam可以将表单参数绑定到变量。您可以找到一个示例

其次,为了从java方法代码内部调用rest服务,您必须使用jersey客户端

您可以使用jersey客户端表单传递表单参数,如下所示

创建表单

ClientConfig config = new DefaultClientConfig();
Client client = Client.create(config);
WebResource service = client.resource(UriBuilder.fromUri("http://localhost:8080/api").build());

Form f = new Form();    
f.add("userId", "foo");    
f.add("deviceId", "bar");    
f.add("comments", "Device");  
将其传递给Restful方法

service.path("processInfo").accept(MediaType.APPLICATION_XML).post(String.class,f);

您可以像这样传递表单参数,使用com.sun.jersey.api.representation.form如下。表格f=新表格();f、 添加(“用户ID”、“foo”);f、 添加(“设备ID”、“条”);f、 添加(“注释”、“设备”);//Fluent接口service.path(“processInfo”).accept(MediaType.APPLICATION_XML).post(String.class,f);太好了!你能把这句话加到你的答案里,再解释一下最后一行吗?这一条:
service.path(“processInfo”).accept(MediaType.APPLICATION\uxml).post(String.class、,‌​f) 
那么我接受。:)具体来说,您正在调用的
path()
对象是什么?