我们想创建一个“WebService”,它返回特定对象的列表。
我们想通过 apache http 客户端库从另一个 java 程序调用这个 Web 服务。
此时,如果我们从 Firefox 中调用 Web 服务,则会出现 406 错误页面。
我们必须使用 JSON 或 XML 来传输列表吗?
如何做到这一点,以及如何使用 apache http 客户端获取列表?
谢谢。
[EDIT]
唯一有效的是使用 JAXB 注释创建一些实体,以便序列化为 XML。
@XmlRootElement(name = "person")
public class Person {
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
@XmlRootElement(name = "persons")
public class PersonList {
@XmlElement(required = true)
public List<Person> persons;
public List<Person> getData() {
return persons;
}
public void setData(List<Person> persons) {
this.persons = persons;
}
}
@RequestMapping(value = "/hello.html", method = RequestMethod.GET, produces = "application/xml")
@ResponseBody
public ResponseEntity<PersonList> hello() {
PersonList test = new PersonList();
List<Person> rep = new ArrayList<Person>();
Person person1 = new Person();
person1.setId("1");
Person person2 = new Person();
person2.setId("2");
rep.add(person1);
rep.add(person2);
test.setData(rep);
// return test;
HttpHeaders responseHeaders = new HttpHeaders();
List<MediaType> medias = new ArrayList<MediaType>();
medias.add(MediaType.ALL);
responseHeaders.setAccept(medias);
return new ResponseEntity<PersonList>(test, responseHeaders, HttpStatus.OK);
}
我尝试使用 Produce 并直接返回对象,但仍然错误 406。
XML + ResponseEntity 有效。
这很奇怪,因为我看到一个非常简单的例子,其中对象被转换为 json 并出现在网络浏览器中。
所以,现在我必须了解如何获取响应并将 XML 转换为实体......
是的,当您的控制器方法注释为@ResponseBody
,Spring将返回的数据转换为JSON http://json.org/.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)