簡體   English   中英

如何在Spring Rest控制器中接收application / x-www-form-urlencoded請求參數

[英]How to receive application/x-www-form-urlencoded Request parameters in Spring rest controller

我正在嘗試編寫一個休息端點,該端點接收application / x-www-form-urlencoded。 但是端點不接受@RequestBody或@RequestParam的請求參數

我曾嘗試使用MultiValueMap來獲取請求參數。 但是我總是得到0個參數。 有沒有一種方法可以將請求值獲取到MultiValueMap或其他POJO類。

AD=&value=sometestvalue這是應用程序/ x-www-form-urlencoded請求正文。 我正在嘗試使用郵遞員發出請求

@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()); 
} 

您不能在POST請求上使用@RequestParam ,因為數據不在GET請求中,因此不在URL中。

您應該將@RequestBodydoc )與注冊適當的HttpMessageConverter一起使用。 您最可能應該使用: FormHttpMessageConverter

嘗試@ResponseBody 然后,更改為String ,而不是MultiValueMap ,以查看正文是否進入請求。

您需要使用MultiValueMap<String, String>

@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;
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM