Spring mvc spring mvc总是JSON repsonse
我正在努力学习SpringMVC,我被困在这个程序中,行为怪异,请任何人帮忙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=*
@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类型,这两种代码都可以正常工作。