Postman中的Spring Boot MultiValueMap参数

时间:2018-03-06 22:36:49

标签: java spring spring-boot junit postman

我在Spring启动时实现了OAuth2。在JUnit中测试它时效果很好,但是当我在邮递员中尝试API时,我总是未经授权。

JUnit中的测试函数:

private String obtainAccessToken(String username, String password) throws Exception {
    final MultiValueMap<String, String> params = new LinkedMultiValueMap<>();
    params.add("grant_type", "password");
    params.add("client_id", CLIENT_ID);
    params.add("username", username);
    params.add("password", password);


    ResultActions result = mockMvc.perform(post("/oauth/token")
            .params(params)
            .with(httpBasic(CLIENT_ID, CLIENT_SECRET))
            .accept(CONTENT_TYPE))
            .andExpect(status().isOk())
            .andExpect(content().contentType(CONTENT_TYPE));


    String resultString = result.andReturn().getResponse().getContentAsString();

    JacksonJsonParser jsonParser = new JacksonJsonParser();
    return jsonParser.parseMap(resultString).get("access_token").toString();
}

我尝试在postman中使用API​​:

内容类型为http://localhost:8080/oauth/token的POST类型application/json 在Body部分我选择了raw和JSON:

{
    "grant_type":"password",
    "client_id":"clientIdPassword",
    "username":"a",
    "password":"a"
}

显示401 Unauthorized。然后我也尝试过这样:

内容类型为application/jsonhttp://localhost:8080/oauth/token?grant_type=password&client_id=clientIdPassword&username=a&password=a的帖子类型。这也显示了401 Unauthorized。

我的问题是如何在Postman中将MultiValueMap设置为参数?

2 个答案:

答案 0 :(得分:0)

你应该使用邮递员的授权标签发送auth标题和请求正文,但是你喜欢。 PFA样本图片enter image description here

答案 1 :(得分:0)

通过POSTMAN工具发送请求时,请选择HTTP方法的类型(POST,PUT,DELETE),然后在“正文”选项卡中选择“原始”选项,然后在其中添加Map的JSON。确保已在“标题”中选择“内容类型”作为“应用程序/ json”。