我有一个 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
,它就可以工作。
是否可以在同一方法中使用@PathParam
和MultipartHashMap
?
编辑:
客户端发送 application/x-www-form-urlencoded
请求,我无法更改它。我想使用路径参数来保持其余所有不变。
最佳答案
将 @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;
关于JAVA接收: use @PathParam and application/x-www-form-urlencoded body in the same method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57005316/