Java Return";“纯文本/纯文本”;而忽略';接受';标题

Java Return";“纯文本/纯文本”;而忽略';接受';标题,java,spring,spring-mvc,content-type,http-accept-header,Java,Spring,Spring Mvc,Content Type,Http Accept Header,我有一段代码: @RequestMapping(value = "/test", produces = "text/plain") @ResponseBody public Object test() { return "true"; } 在本例中,我希望返回带有“text/plain”类型的“true”,即使我的accept头上写着“application/json”或其他任何内容。现在当我这么做的时候,我得到了406分。有没有简单的方法来做这样的事情?我是说真的很简单?我不想改变我

我有一段代码:

@RequestMapping(value = "/test", produces = "text/plain")
@ResponseBody
public Object test() {
    return "true";
}
在本例中,我希望返回带有“text/plain”类型的“true”,即使我的accept头上写着“application/json”或其他任何内容。现在当我这么做的时候,我得到了406分。有没有简单的方法来做这样的事情?我是说真的很简单?我不想改变我的配置文件,这将影响不仅仅是这一个方法

编辑: 我找到了部分解决方案

@RequestMapping(value = "/test")
@ResponseBody
public Object test(){
    HttpHeaders responseHeaders = new HttpHeaders();
    responseHeaders.setContentType(MediaType.TEXT_PLAIN);
    return new ResponseEntity<>("true", responseHeaders, HttpStatus.OK);
}
@RequestMapping(value=“/test”)
@应答器
公共对象测试(){
HttpHeaders responseHeaders=新的HttpHeaders();
responseHeaders.setContentType(MediaType.TEXT\u PLAIN);
返回新的ResponseEntity(“true”,responseHeaders,HttpStatus.OK);
}

但是有谁知道更简单、更短的解决方案吗?

要获得更灵活的设置,您可以删除
products=“text/plain”
,或者添加
headers=“Accept=application/json”
。见:

映射控制器方法生成的媒体类型值得特别注意–我们可以通过上面介绍的@RequestMapping headers属性基于其Accept标头映射请求:

@RequestMapping(
  value = "/ex/foos", 
  method = GET, 
  headers = "Accept=application/json")
@ResponseBody
public String getFoosAsJsonFromBrowser() {
    return "Get some Foos with Header Old";
}
这种定义Accept标头的方法的匹配是灵活的–它使用contains而不是equals,因此如下请求仍然可以正确映射:

curl -H "Accept:application/json,text/html"  http://localhost:8080/spring-rest/ex/foos

在调用者中声明标头

accept:text/plain
所以您可以将来自服务器的响应声明为text/plain


调用方可以是(邮递员、JS等)

@RequestMapping(value=“/test”,products=“application/json”)这个怎么样?@iamL然后我将得到内容类型为:application/json的响应,但我想要文本/普通。如果客户端只接受
application/json
,则制作人不能违反该协议。设置contentType:“text/plain;charset=ISO-8859-1”并查看它是否有效。请分享有关客户端代码和请求头的更多详细信息。