当我在我的控制器类中使用@RequestBody时,出现以下异常。但是我只需要对post方法使用@RequestBody。异常错误:发生于:不支持内容类型“application/json”任何人都可以帮助如何解决这个问题..
@RequestBody
f4t66c6m1#
您可以添加以下注解
@RequestMapping(method = RequestMethod.PUT, consumes = MediaType.APPLICATION_JSON)
或将此依赖项
<dependency> <groupId>com.fasterxml.jackson.dataformat</groupId> <artifactId>jackson-dataformat-xml</artifactId> <version>2.4.3</version> </dependency>
kx7yvsdv2#
我在我的单元测试中得到了这个,即使我在控制器方法上有所有正确的注解,并且我在我的请求中正确地设置了Content-Type。错误-Caused by: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json' not supported在调试AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters之后,我意识到没有支持application/json的已注册消息转换器。@AutoConfigureMockMvc不会寄存所有转换器,但@WebMvcTest会。我更改了测试注解,问题就解决了。之前我用的是-
Caused by: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json' not supported
AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters
application/json
@AutoConfigureMockMvc
@WebMvcTest
@SpringJUnitWebConfig @ContextConfiguration @AutoConfigureMockMvc public class ReportControllerTests {
现在使用@WebMvcTest来注册附加的消息转换器。
@SpringJUnitWebConfig @ContextConfiguration @WebMvcTest(controllers = ReportController.class) public class ReportControllerTests {
hwazgwia3#
首先,请确保您有一个正确的Jackson版本使用:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-core</artifactId> <version>2.8.0</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.8.0</version> </dependency> <dependency> <artifactId>jackson-annotations</artifactId> <groupId>com.fasterxml.jackson.core</groupId> <version>2.8.0</version> </dependency>
对于我来说,当我使用v2.7.6或v2.8.7版本时,这个错误就出现了!我换到了v2.8.0,它运行得很好!其次,确保您的控制器代码:
@RestController @RequestMapping(value = "/user", produces = {MediaType.APPLICATION_JSON}, consumes = {MediaType.APPLICATION_JSON}) public class UserController extends GenericController<User, String> { @RequestMapping(method = RequestMethod.POST) @ResponseStatus(HttpStatus.CREATED) public ResponseMessage add(@RequestBody User user) { String id = getService().insert(user); return ResponseMessage.created(id ); } }
请求正文:
{ "username":"123", "password":"123", "name":"123", "phone":"123", "email":"123@qq.com", "status":1 }
Postman :Postman Post希望对你有帮助!
k5hmc34c4#
尝试在@PutMapping中不使用使用者和生成器选项。
@PutMapping(value = "/lists/{ListName}/item")
2izufjch5#
在pom.xml中添加jackson-databind解决了我的问题:
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.12.1</version> </dependency>
不需要添加消耗:consumes = MediaType.APPLICATION_JSON_VALUE
consumes = MediaType.APPLICATION_JSON_VALUE
e5nqia276#
我也遇到了同样的问题。现在我通过以下步骤修复了它在控制器中
@RequestMapping(consumes=MediaType.APPLICATION_JSON_VALUE)
在pom.xml中包含以下依赖项
<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.9.4</version> </dependency>
cs7cruho7#
你在@RequestMapping中有consumes="application/json"属性吗?如果没有,请把它放在注解中,然后再试一次。另外,如果这不起作用,试着使用contentNegotiator,你可以在谷歌上搜索Spring的contentNegotiation。
@RequestMapping
consumes="application/json"
contentNegotiator
contentNegotiation
7条答案
按热度按时间f4t66c6m1#
您可以添加以下注解
或将此依赖项
kx7yvsdv2#
我在我的单元测试中得到了这个,即使我在控制器方法上有所有正确的注解,并且我在我的请求中正确地设置了Content-Type。
错误-
Caused by: org.springframework.web.HttpMediaTypeNotSupportedException: Content type 'application/json' not supported
在调试
AbstractMessageConverterMethodArgumentResolver.readWithMessageConverters
之后,我意识到没有支持application/json
的已注册消息转换器。@AutoConfigureMockMvc
不会寄存所有转换器,但@WebMvcTest
会。我更改了测试注解,问题就解决了。
之前我用的是-
现在使用
@WebMvcTest
来注册附加的消息转换器。hwazgwia3#
首先,请确保您有一个正确的Jackson版本使用:
对于我来说,当我使用v2.7.6或v2.8.7版本时,这个错误就出现了!我换到了v2.8.0,它运行得很好!
其次,确保您的控制器代码:
请求正文:
Postman :
Postman Post
希望对你有帮助!
k5hmc34c4#
尝试在@PutMapping中不使用使用者和生成器选项。
2izufjch5#
在pom.xml中添加jackson-databind解决了我的问题:
不需要添加消耗:
consumes = MediaType.APPLICATION_JSON_VALUE
e5nqia276#
我也遇到了同样的问题。现在我通过以下步骤修复了它
在控制器中
在pom.xml中包含以下依赖项
cs7cruho7#
你在
@RequestMapping
中有consumes="application/json"
属性吗?如果没有,请把它放在注解中,然后再试一次。另外,如果这不起作用,试着使用contentNegotiator
,你可以在谷歌上搜索Spring的contentNegotiation
。