{"msg":"Content type 'text/plain;charset=UTF-8' not supported","code":1,"resp_code":404,"resp_msg":"Content type 'text/plain;charset=UTF-8' not supported"}
时间: 2025-06-20 22:54:59 浏览: 7
### HTTP响应错误解决方案
当遇到`Content type 'text/plain;charset=UTF-8' not supported`错误时,通常是因为Spring Boot应用程序在处理请求时无法正确解析或匹配请求的内容类型。以下是一些可能的解决方案和注意事项。
#### 1. 检查控制器方法的返回类型
确保控制器方法的返回类型与客户端期望的内容类型一致。例如,如果客户端期望的是JSON格式的数据,则应使用`@ResponseBody`注解或将类标记为`@RestController`[^4]。
```java
@RestController
@RequestMapping("/example")
public class ExampleController {
@PostMapping(value = "/test", produces = "application/json")
public ResponseEntity<String> test(@RequestBody String requestBody) {
return ResponseEntity.ok("Success");
}
}
```
#### 2. 设置正确的`produces`和`consumes`属性
在`@RequestMapping`或其变体(如`@PostMapping`)中明确指定`produces`和`consumes`属性,以确保请求和响应的内容类型匹配。
```java
@PostMapping(value = "/search/list",
consumes = "application/json",
produces = "application/json")
public List<Good> list(@RequestBody SearchGoodByIdsDto searchGoodByIdsDto) {
// 方法逻辑
}
```
上述代码明确指定了请求和响应的内容类型为`application/json`[^5]。
#### 3. 配置全局消息转换器
如果问题仍然存在,可以检查Spring Boot是否正确配置了`HttpMessageConverter`。通过自定义`WebMvcConfigurer`来确保支持所需的媒体类型。
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.APPLICATION_JSON));
converters.add(converter);
}
}
```
#### 4. 检查客户端请求头
确保客户端发送的请求头中包含正确的`Content-Type`和`Accept`字段。例如,使用`curl`命令测试API时,需要添加以下头部信息:
```bash
curl -X POST http://localhost:8080/search/list \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"ids":[1,2,3]}'
```
#### 5. 调试日志分析
启用Spring Boot的调试日志,查看具体的请求和响应内容。可以在`application.properties`或`application.yml`中添加以下配置:
```properties
logging.level.org.springframework.web=DEBUG
```
这将输出详细的HTTP请求和响应信息,帮助定位问题[^6]。
#### 6. 检查嵌入式容器配置
如果使用的是嵌入式Tomcat、Jetty或Undertow,并且启用了WebSocket功能,则需要确保容器的WebSocket支持不会干扰普通HTTP请求[^1]。
---
### 示例代码修正
以下是基于引用[3]中的`GoodController`代码进行改进的示例:
```java
@Slf4j
@RestController
@RequestMapping("/good")
public class GoodController {
@PostMapping(value = "/search/list",
consumes = "application/json",
produces = "application/json")
public ResponseEntity<List<Good>> list(@RequestBody SearchGoodByIdsDto searchGoodByIdsDto) {
log.info("search Good list : {}", searchGoodByIdsDto);
List<Good> list = new ArrayList<>();
if (searchGoodByIdsDto.getIds() != null && !searchGoodByIdsDto.getIds().isEmpty()) {
for (Integer id : searchGoodByIdsDto.getIds()) {
Good good = new Good();
good.setId(id);
good.setName("good_" + id);
good.setPrice(new BigDecimal(id * 10));
list.add(good);
}
}
return ResponseEntity.ok(list);
}
}
```
---
###
阅读全文
相关推荐

















