java AWS SNS http订阅返回“不支持的媒体类型:内容类型'文本/纯文本; charset=UTF-8'不支持”

5lhxktic  于 2022-12-21  发布在  Java
关注(0)|答案(1)|浏览(187)

我有一个SNS主题和一个HTTP订阅,它们调用Spring引导端点,我的端点看起来像这样:

@RestController
public class MyController {

    @PostMapping(value = "/path")
    public ResponseEntity<Void> action(@RequestBody Object body) {
        return ResponseEntity.noContent().build();
    }
}

在本主题中,当我使用AWS CLI发布消息时,我尝试调用此端点,如下所示:

aws sns publish --topic-arn arn:aws:sns:eu-west-1:000000000000:MyTopic \
    --message '{"name": "test"}' --endpoint-url http://localhost:4566

但我得到一个错误:

Unsupported Media Type: Content type 'text/plain;charset=UTF-8' is not supported

我将MediaType.TEXT_PLAIN_VALUE添加到代码中:

@PostMapping(value = "/path", consumes = MediaType.TEXT_PLAIN_VALUE)

但我得到了同样的错误。
由于某种原因,该主题使用不同的text/plain媒体类型发送邮件。
我学习了这个documentation,并且有效地使用以下命令发送消息:

...
Content-Type: text/plain; charset=UTF-8
...

我的问题是,有没有办法强迫SNS发布者使用application/json
或者有什么方法可以解决我的控制器中的问题吗?

dwbf0jvd

dwbf0jvd1#

当我使用MediaType.TEXT_PLAIN_VALUE@RequestBody String body时,问题解决了

@PostMapping(value = "/path", consumes = MediaType.TEXT_PLAIN_VALUE)
public ResponseEntity<String> action(@RequestBody String body) {

相关问题