Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring mvc spring mvc总是JSON repsonse_Spring Mvc - Fatal编程技术网

Spring mvc spring mvc总是JSON repsonse

Spring mvc spring mvc总是JSON repsonse,spring-mvc,Spring Mvc,我正在努力学习SpringMVC,我被困在这个程序中,行为怪异,请任何人帮忙 @Controller public class GreetingController { @RequestMapping(value="/greeting", consumes={"application/json", "application/xml"},produces = {"application/json","application/xml"}, headers = "Content-type=*

我正在努力学习SpringMVC,我被困在这个程序中,行为怪异,请任何人帮忙

 @Controller  
 public class GreetingController {
 @RequestMapping(value="/greeting", consumes={"application/json", "application/xml"},produces = {"application/json","application/xml"}, headers = "Content-type=*/*")
 public @ResponseBody Greeting greeting(
        @RequestParam(value="name", required=false, defaultValue="I'm default") String name) {
    Greeting obj =  new Greeting("1",name);
    Address address = new Address("CA, US");
    obj.setAddress(address);
    return obj;
   }
 }
问候语和地址只是POJO的。
这里是“curl”的输出,即不管内容类型如何,输出都是JSON格式

curl --header "Content-type: application/xml" http://host.com:8080/javamvc/greeting

{"id":1,"content":"Hello, I'm default!","address":{"addr":"CA, US"}}  

curl --header "Content-type: application/json" http://host.com:8080/javamvc/greeting

{"id":1,"content":"Hello, I'm default!","address":{"addr":"CA, US"}}
然后,当我从mozilla使用“RestClient”时,无论我的
Content-type=application/json
Content-type=application/xml

<?xml version="1.0" encoding="UTF-8" standalone="yes"?><greeting><id>1</id><content>Hello, I'm default!</content><address><addr>CA, US</addr></address></greeting>
1你好,我是默认值!加州,美国

有人能帮忙吗?

在curl请求中,您指定的是请求正文的
内容类型,而不是响应正文中所期望的内容类型

为此,您需要指定

Spring总是生成
application/json
,因为它是
生成值列表中的第一个


您必须更具体地说明您在使用Mozilla时所做的工作,但它似乎在请求将
Accept
标题设置为
application/xml

感谢您澄清Sotirios,现在当我给出Accept=application/xml时,我得到了一个状态代码:406 Not Acceptable。我尝试从RequestMapping中删除产品,但没有帮助。生产和消费也是强制性的吗?@shreyasKN否,
生产
消费
只是限制您的
@RequestMapping
的提示。在您的例子中,您需要
生成
来区分映射,否则它们是相同的。至于406状态代码,我建议您将日志级别改为DEBUG,看看Spring是怎么说的。明白了,我必须在dispatcher servlet中配置Jackson http message converter,根据accept类型,这两种代码都可以正常工作。