Java 如何从Jersey的POST方法读取所有未知的表单参数使用MediaType.APPLICATION\u Form\u URLENCODED
对于Java 如何从Jersey的POST方法读取所有未知的表单参数使用MediaType.APPLICATION\u Form\u URLENCODED,java,rest,post,jersey,put,Java,Rest,Post,Jersey,Put,对于应用程序/x-www-form-urlencoded内容类型,多值映射(jersey)为空,参数未知,因此无法使用@FormParam 这只发生在POSThttp方法中,但使用PUT方法时,一切都按预期进行。也就是说,对于相同内容类型的PUT请求,多值映射不是空的 下面是代码片段 @POST @Consumes("application/x-www-form-urlencoded") public Response processPostRequestFormURLEncodedMedia(
应用程序/x-www-form-urlencoded
内容类型,多值映射(jersey)为空,参数未知,因此无法使用@FormParam
这只发生在POSThttp方法中,但使用PUT方法时,一切都按预期进行。也就是说,对于相同内容类型的PUT请求,多值映射不是空的
下面是代码片段
@POST
@Consumes("application/x-www-form-urlencoded")
public Response processPostRequestFormURLEncodedMedia(
@HeaderParam(REFERER) String referer,
@Context final UriInfo uriInfo,
@Context final HttpHeaders httpHeaders,
@Context final Request request,
MultivaluedMap<String, String> formParams) {
...
}
@POST
@使用(“应用程序/x-www-form-urlencoded”)
公共响应流程PostRequestFormUrlEncodedMedia(
@HeaderParam(REFERER)字符串REFERER,
@上下文最终UriInfo UriInfo,
@上下文最终HttpHeaders HttpHeaders,
@上下文最终请求,
多值映射(formParams){
...
}
提前感谢。如果您使用表单而不是多值map
,会发生什么情况?这是一个已知的问题。根据我的记忆,甚至应该有一个关于它的日志警告,说您应该使用@FormParam
。我忘了我以前是怎么做到的。必须使用ContainerRequest中的属性来提取它。好的,我没有尝试。但我想这就是我所做的。将带有@Context
的ContainerRequest
注入方法,然后使用cr.getProperty(InternalServerProperties.FORM\u DECODED\u属性)
。我认为应该返回一个表单
。我只是简单地看了一下谢谢,Peeskillet,谢谢你宝贵的时间和反馈,通过你的解决方案,我可以解决这个问题。如果你使用表单而不是多值映射
,会发生什么?这是一个已知的问题。根据我的记忆,甚至应该有一个关于它的日志警告,说您应该使用@FormParam
。我忘了我以前是怎么做到的。必须使用ContainerRequest中的属性来提取它。好的,我没有尝试。但我想这就是我所做的。将带有@Context
的ContainerRequest
注入方法,然后使用cr.getProperty(InternalServerProperties.FORM\u DECODED\u属性)
。我认为应该返回一个表单
。我只是简单地看了一下谢谢你,Peeskillet,谢谢你宝贵的时间和反馈,有了你的解决方案,我可以解决这个问题。