Curl JAX RS和application/x-www-form-url使用多个参数编码
我试图从我的x-www-form-urlencoded中获取值,但多值Map formParams不包含任何值: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
@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'