JAVA RX:以相同的方法使用@PathParam和application / x-www-form-urlencoded正文

时间:2019-07-12 10:40:28

标签: java jax-rs wildfly resteasy

我有一个EJB,其方法带有注释,可以将其公开为其他Web服务。

@Path(value = "{group}/grid")
@POST
@Consumes(value = MediaType.APPLICATION_FORM_URLENCODED)
@Produces(value = {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public GridResponse<MyObject> getTypeFromGroup(
        @PathParam(value = "group") String group, 
        MultivaluedHashMap<String,String> formParams
) throws BssException;

MultivaluedHashMap将包含查询使用的一些动态信息,并且未知。 PathParam用于创建特定的过滤器。

当我调用此方法时,出现以下错误:

12:17:22,847 ERROR [org.jboss.resteasy.resteasy_jaxrs.i18n] (default task-1) RESTEASY002010: Failed to execute: javax.ws.rs.NotSupportedException: RESTEASY003065: Cannot consume content type

如果我删除了PathParam,它就可以工作。

如果我删除了MultipartHashMap,它就可以工作。

是否可以在同一方法中使用@PathParamMultipartHashMap

编辑: 客户端发送了一个application/x-www-form-urlencoded请求,但我无法更改。我想使用路径参数使其余所有内容保持不变。

1 个答案:

答案 0 :(得分:0)

@Consume的类型从MediaType.APPLICATION_FORM_URLENCODED更改为MediaType.APPLICATION_JSON,然后将@PathParam移至方法args的结尾:

@Path(value = "{group}/grid")
@POST
@Consumes(value = MediaType.APPLICATION_JSON)
@Produces(value = {MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
public GridResponse<MyObject> getTypeFromGroup(
        MultivaluedHashMap<String,String> formParams,
        @PathParam(value = "group") String group,
) throws BssException;