Java 如何从另一个方法将@FormParam传递给RESTful服务?
免责声明:我确实仔细搜索了这个问题的答案,是的,我确实找到了另一个问题:。但首先,这个问题是关于Javascript的,而我是关于Java的,其次,它没有答案。关于这个问题 使用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(
@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()
对象是什么?