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

内容类型为application/x-www-form-urlencoded的Http Put请求在Spring中不起作用

钦良弼
2023-03-14

我有一个spring-boot应用程序,它唯一做的事情是接收http请求。

这是我的Spring管理员:

@RestController
public class WebController {

    @Autowired
    private CallRecording callRecording;

    @PutMapping(path = "/cdrpostbox/callrecording/{hostedAccountId}/{mp3FileName}", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
    public ResponseEntity<Object> callRecording(@PathVariable("hostedAccountId") String hostedAccountId, @PathVariable("mp3FileName") String mp3FileName, MultipartFile file) {
        return ResponseEntity.status(callRecording.service(hostedAccountId, mp3FileName, file)).body(null);
    }

}

我在用邮递员寄请求。我的spring应用程序接收到的请求不能更改,因为代码不是由我的团队维护的。

请求标头

请求主体

我在这里发现了很多类似问题的问题,但不是我必须解决的完全相同的问题。我尝试添加和删除@RequestBody,将@RequestBody替换为@RequestParam,我尝试了MultiValueMap,但它总是返回相同的错误。

java.lang.IllegalArgumentException: URLDecoder: Illegal hex characters in escape (%) pattern - For input string: "x"

我甚至不能调试代码,因为它在到达控制器之前就失败了。

我错过了什么?

共有1个答案

赵君植
2023-03-14

头中的content-type是urlencoded,但您发送的是二进制数据。

---编辑

如果希望将该文件作为多部分文件获取,那么将该文件作为表单数据从postman发送,将该数据的名称设置为file,并将@requestparam添加到方法中的file参数中。

 类似资料: