当前位置: 首页 > 知识库问答 >
问题:

如何用内容类型application/x-www-form-urlencoded中的自定义对象测试Post请求?

慕容成文
2023-03-14

我有控制器:

    @PostMapping(value = "/value/", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public String updateSettings(final Dto dto) {
        System.out.println(">>> " + dto);
        return "template";
    }

如果我通过chrome窗口发送请求,控制器可以工作。但是当我为这个方法编写测试时,我遇到了问题。未转换对象,未插入值。

测试:

@Test
    @WithMockUser(username = FAKE_VALID_USER, password = FAKE_VALID_PASSWORD)
    public void test_B_CreateDtoWithValidForm() throws Exception {

        final Dto dto = new Dto();
               dto.setId("value");
               dto.setEnabled("true");

        this.mockMvc.perform(post(URL_SET_PROVIDER_SETTINGS)
                .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE)
                .content(dto.toString()))
                    .andDo(print());
  }

输出为>>>Dto{ID=null,enabled=false}

如何用内容类型application/x-www-form-urlencoded中的自定义对象测试Post请求?

共有1个答案

吕皓
2023-03-14

在这种情况下,您不需要使用content,而是需要以以下方式使用param:

this.mockMvc.perform(post(URL_SET_PROVIDER_SETTINGS)
            .contentType(MediaType.APPLICATION_FORM_URLENCODED_VALUE)
            .param("id", "value")
            .param("enabled", "true"))
            .andDo(print());
 类似资料:
  • 我有一个api要求在标题中发送以下参数- 内容类型-应用程序/x-www. form-urlencoded AuthKey-(会话令牌) 以及正文中的以下参数(表单日,即键值对) storeId-1 类型-产品 类别ID-324 但是每当我点击这个api,我总是得到401(未授权)错误。我已经尝试使用MultipartRequest正文和formBody,我知道这与正文无关(它的头,我需要发送内容

  • 我正在使用OpenAPI生成器生成Spring REST API。下面是一个片段: 它生成一个Spring REST API方法(只是一个有趣的方法): 然后,我想使用从集成测试中调用它: 我得到一个错误: 我对服务器端进行了一点调试,看起来它需要一个多部分的内容,但我不明白为什么。 内容类型为application/x-www-form-urlencoded的Http Post请求在Spring

  • 我已经通过邮递员发送了标题Content-Type=Application/x-www-form-urlencoded的POST请求。 我得到了PHP中的数组,格式如下。我无法在PHP页面中访问。我该如何解决这个问题? 结果是

  • 这是我的课。当我使用带有有效json的邮递员访问该url时http://localhost:8090/user 我犯了一个错误 我试过这个https://stackoverflow.com/a/38252762/11369236 我不想像这里这样使用requestparam https://stackoverflow.com/a/43065261/11369236 一些答案建议使用 但spring

  • 问题内容: 是新来春目前正在试图做的HTTP POST请求的应用程序/ x-WWW的形式,URL编码,但是当我守这在我的头,然后春天不承认它,并说 了 有人知道如何解决吗?请评论我。 我的控制器的一个示例是: 问题答案: 问题在于,当我们使用application / x-www-form-urlencoded时,Spring不会将其理解为RequestBody。因此,如果要使用它,则必须删除@R

  • 我是spring的新手,目前正在尝试执行HTTP POST request Application/x-www-form-urlencoded,但当我将其保存在头中时,spring无法识别它,并对说 org.springframework.web.httpmediatypenotsupportedexception:不支持内容类型“application/x-www-form-urlencoded