Curl JAX RS和application/x-www-form-url使用多个参数编码

Curl JAX RS和application/x-www-form-url使用多个参数编码,curl,postman,jax-rs,x-www-form-urlencoded,Curl,Postman,Jax Rs,X Www Form Urlencoded,我试图从我的x-www-form-urlencoded中获取值,但多值Map formParams不包含任何值: @POST @Path("/submitForm") @Consumes(MediaType.APPLICATION_FORM_URLENCODED) @Produces(MediaType.APPLICATION_JSON) public Response getFormDataUsingMultivaluedMap(@Cont

我试图从我的x-www-form-urlencoded中获取值,但多值Map formParams不包含任何值:

@POST
    @Path("/submitForm")
    @Consumes(MediaType.APPLICATION_FORM_URLENCODED)
    @Produces(MediaType.APPLICATION_JSON)

    public Response getFormDataUsingMultivaluedMap(@Context HttpServletRequest request,
            @HeaderParam(ConstantsWebservice.X_API_KEY) String formKey,
            MultivaluedMap<String, String> formParams) {
        
    for (String key : formParams.keySet()) {
我目前不知道为什么列表中没有“测试”

我也尝试过邮递员:


知道怎么回事吗?

您可能必须使用
@FormParam
。在某些情况下,将从HttpServletRequest读取参数,使其为空。我认为这与一些servlet过滤器读取它们有关。如果有第三方过滤器在运行,这可能会发生。@PaulSamsotha但我必须为10个参数定义10次@FormParam?我需要这个动态。您是否在日志中看到警告说“……请求主体已被servlet或servlet过滤器使用”?不幸的是,没有。。。。我也尝试过函数参数列表中的表单。也不管用我知道一种方法,但看起来不太好。它将表单放入属性中的内容是什么。您可以通过注入的ContainerRequest检索该属性。看见
curl --location --request POST 'http://localhost:8080/service/formintegration/submitForm' \
--header 'X-API-KEY: 123456789' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'test=test'