无法将地图传递给宁静的方法

时间:2016-10-08 09:18:04

标签: java ajax rest post postman

我试图通过邮递员调用此API:

@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
public void printDetails(final MultivaluedMap<String, String> formParams) {

    for(String key : formParams.keySet()) {
        System.out.println(key + "     " + formParams.get(key));
    }
}

但地图结果是空的。请帮我一样。

PS:这是我第一次尝试将可变数量的参数传递给api。我已经提过了 sending List/Map as POST parameter jerseyHow to access parameters in a RESTful POST method

我认为我的错误在于我在postman中传递参数的方式:postman image

请帮我一样。另外请帮助了解如何通过ajax(在JS中)调用此API。

2 个答案:

答案 0 :(得分:2)

将请求标头设置为"application/x-www-form-urlencoded"

Postman request header

请求正文 - 选择raw并提供如下所述的值: -

{
    "LOCATION": "Singapore"
}

enter image description here

答案 1 :(得分:1)

我找到了一个可能的答案。

@POST
public void printDetails() {
    HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.currentRequestAttributes()).getRequest();
    Map<String, String[]> mapp =  request.getParameterMap();
    for(String key : mapp.keySet()) {
        System.out.println(key + "     " + mapp.get(key)[0]);
    }
}

仍然不确定如何通过在参数

中传递“final MultivaluedMap”来实现