相关疑难解决方法(0)

如何在Jersey客户端的DELETE请求中发送封装数据?

我在Jersey 2.x中有以下服务器端代码:

@Path("/store/remove/from/group")
@DELETE
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.TEXT_PLAIN)
public Response removeStoresFromGroup(@FormParam("storeName") List<String> storeNames, @FormParam("groupName") String groupName) {
    //......
}
Run Code Online (Sandbox Code Playgroud)

在客户端,我想使用Jersey 2.x客户端向上述Web服务发送删除请求.但是,从Jersey客户端API的文档中,我没有找到如何在DELETE请求中包含以下数据:

WebTarget webTarget = client.target("/store/remove/from/group");
MultivaluedMap<String, String> formData = new MultivaluedHashMap<String, String>();
List<String> storeName = new ArrayList<String>();
storeName.add("Store1");
storeName.add("Store2");
storeName.add("Store3");

formData.addAll("storeName", storeName);
formData.add("groupName", "Group A");

Response response = webTarget.request().accept(MediaType.TEXT_PLAIN).delete();   //The delete() method doesn't take any entity body in the request.
Run Code Online (Sandbox Code Playgroud)

从Jersey客户端API,SyncInvoker该类不支持将delete实体主体作为其参数的方法.所以我只能使用POST或PUT将数据发送到服务器,如下所示(但不是DELETE):

Response response = webTarget.request().accept(MediaType.TEXT_PLAIN).post(Entity.form(formData)); 
Run Code Online (Sandbox Code Playgroud)

但我想使用DELETE请求,因为请求正在删除一些资源.如何通过Jersey客户端发送带有一些实体数据的DELETE请求?

java rest jax-rs jersey

10
推荐指数
3
解决办法
2万
查看次数

标签 统计

java ×1

jax-rs ×1

jersey ×1

rest ×1