[英]Getting HTTP Status 406 – Not Acceptable error when trying to return an object in Spring REST controller
[英]Spring Rest Controller return 406 NOT acceptable for text/plain
我对 rest controller 和 text/plain 有疑问。 我在这里阅读了很多答案并尝试了很多解决方案但没有成功。 我有一个 rest controller 应该返回一个字符串作为文本/纯文本。 这是我的 Controller:
@RestController
@RequestMapping(value = "/content", headers="Accept=*/*",
produces={"text/plain", "application/json"})
public class MyController {
@GetMapping(value = "", produces = {MediaType.TEXT_PLAIN_VALUE, MediaType.APPLICATION_JSON_VALUE})
public ResponseEntity<String> getContent() {
return ResponseEntity.ok("a,b,c\n1,2,3\n3,4,5");
}
所以当我这样打电话时:
https://localhost:9002/rest/v2/content -H "accept: text/plain"
我得到 406 Not Acceptable Response with message: 找不到可接受的表示
但是:
https://localhost:9002/rest/v2/content -H "accept: application/json"
我得到了例外结果:
content-type: text/plain
在响应 Header 中。
我试图在我的 WebMvcConfigurationSupport 中调整 ContenNegociationManager,如下所示:
@Override
public void configureContentNegotiation(final ContentNegotiationConfigurer configurer)
{
configurer.favorPathExtension(false).
favorParameter(false).
parameterName("mediaType").
ignoreAcceptHeader(false).
useJaf(false).
defaultContentType(MediaType.APPLICATION_JSON).
mediaType("properties", MediaType.TEXT_PLAIN);
}
我也尝试过:
mediaType("plain", MediaType.TEXT_PLAIN);
我仍然得到相同的响应 406。
我的转换器列表定义为:
<util:list id="myConverters">
<ref bean="customJsonHttpMessageConverter"/>
<ref bean="customXmlHttpMessageConverter"/>
</util:list>
<bean id="customJsonHttpMessageConverter" parent="jsonHttpMessageConverter">
<property name="jaxbContextFactory" ref="customJaxbContextFactory" />
</bean>
<bean id="customXmlHttpMessageConverter" parent="xmlHttpMessageConverter">
<property name="jaxbContextFactory" ref="customJaxbContextFactory" />
</bean>
并在配置中:
@Override
protected void configureMessageConverters(final List<HttpMessageConverter<?>> converters)
{
converters.addAll(myConverters);
}
我在这里想念什么?
谢谢@CodeScale 的提示。 我通过将 StringHttpMessageConverter 添加到我的转换器来修复它。
@Override
protected void configureMessageConverters(final List<HttpMessageConverter<?>> converters)
{
myConverters.add(new StringHttpMessageConverter());
converters.addAll(myConverters);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.