微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MockMVC在发布请求的请求参数中添加附加引号和字符串

如何解决MockMVC在发布请求的请求参数中添加附加引号和字符串

当在请求生成器中的param()中传递时,mockmvc会在字符串的末尾添加引号,如下所示

// initialization of mockmvc
mockmvc = mockmvcBuilders.webAppContextSetup(context).build();

ObjectNode tweets = ((ObjectNode) result.getRequest().getAttribute("tweets"));

String query = tweets.get("query").toString();
String nextToken = tweets.get("Meta").get("next_token").toString();

mockmvc.perform(mockmvcRequestBuilders.post("/next")
                    .param("query",query)
                    .param("next_token",nextToken)
                    .accept(MediaType.APPLICATION_JSON))
                    .andExpect(status().isOk())
                    .andExpect(jsonPath("$.isError",is("N")))
                    .andReturn();

如果在控制器中接收到查询"#GoGreen"且next_token为"wefw234234ewf234" 查询= "\"#GoGreen\""和next_token = "\"wefw234234ewf234\""

    @PostMapping("/next") @ResponseBody
    public ResponseEntity<Object> nextPageTrendingTweets(@RequestParam("query") String query,@RequestParam("next_token") String nextToken)

初始化mockmvc时可能丢失了某些内容。我搜索了此问题,但找不到任何解决方案。

解决方法

问题不在于嘲笑Mvc,而在于您如何从ObjectNode“推文”中提取数据。您已经使用.toString()方法来获取字符串数据。但是,这是不正确的,因为ObjectNode.get()方法返回对象,而.toString()将其转换为字符串表示形式,这就是为什么要使用附加引号的原因。因此,解决问题的方法是使用ObjectNode.get().asText()方法,该方法将在对象中返回该确切的字符串,而无需进行任何修改或转换。

,

片段部分(#foo)完全位于浏览器内部,并且未在HTTP请求中传递。完全不要发送。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。