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

如何在Spring rest控制器中接收application/x-www-form-urlencoded请求参数

赵华彩
2023-03-14

我试图编写一个restendpoint,它接收application/x-www-form-urlencoded。但是endpoint不接受@requestbody或@requestparam的请求参数

我已经尝试使用MultiValueMap来获取请求参数。但我总是得到0个参数。是否有一种方法可以获取MultiValueMap或其他POJO类的请求值。

ad=&value=sometestvalue-这是application/x-www-form-urlencoded requestbody。我试着用邮递员来做这个请求

@RequestMapping(value = "/test/verification/pay/{id}", method = RequestMethod.POST,
            consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
@ResponseBody
public Response testVerificationPay(@PathVariable("id") long id, @RequestParam MultiValueMap formData,
                                           HttpServletRequest servletRequest, ServiceContext serviceContext){
        log.info("!--REQUEST START--!"+formData.toString()); 
} 

共有1个答案

段超
2023-03-14

您需要使用multivalueMap

@RequestMapping(value = "/test/verification/pay/{id}", method = RequestMethod.POST, consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    @ResponseBody
    public Response testVerificationPay(@PathVariable("id") long id, @RequestParam MultiValueMap<String, String> formData) {
        System.out.println("!--REQUEST START--!" + formData.toString());
        return null;
    }
 类似资料:
  • 我正在编写一个RESTendpoint,它需要同时支持application/x-www-form-urlencoded和application/json作为请求体。我做了以下配置, 虽然它单独支持application/x-www-form-urlencoded或application/json(当我从consumes={}中注释掉一种内容类型时),但它不同时支持这两种类型。有什么想法吗?

  • 问题内容: 之间有什么区别 request.ContentType =“ application / json; charset = utf-8”; 和 webRequest.ContentType =“ application / x-www-form-urlencoded”; 问题答案: 第一种情况是告诉Web服务器您正在发布JSON数据,如下所示: 第二个选项是告诉Web服务器您将对URL中

  • 我有一个SOAP客户端发送一个请求,它的内容类型定义为应用程序/x-wow-form-urlencoded。我的jax-ws服务器响应HTTP 415错误,抱怨它需要文本/xml的内容类型。 显然,无法更改此客户端,因此我正在尝试找出是否有任何方法可以强制我的服务器接受此内容类型?

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

  • 我将请求作为内容类型发送给我的控制器类请求:application/json和application/x-www-form-urlencoded格式,它应该允许这两种类型。 但是当我使用请求类型作为应用程序/x-www-form-urlencoded时,它正在工作,但当我使用请求应用程序/json时,该代码不工作,它给出400响应状态。如何解决这个问题。

  • 在java中,如何使用。我不明白如何发送带有键值的正文,如上面的屏幕截图所示。 我尝试过以下代码: 但是在回复中,我没有收到正确的数据。