gpt4 book ai didi

java - Spring MVC @ResponseBody 返回一个列表

转载 作者:搜寻专家 更新时间:2023-11-01 00:59:28 24 4
gpt4 key购买 nike

我们想创建一个返回特定对象列表的“WebService”。我们想通过 apache http 客户端库从另一个 java 程序调用这个 web 服务。

此时,如果我们从 Firefox 调用 web 服务,则会出现 406 错误页面。

我们是否必须使用 JSON 或 XML 来传输列表?如何做到这一点,以及如何使用 apache http 客户端获取列表?

谢谢。


[编辑]

唯一可行的是创建一些带有 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);
}

我尝试使用 produces 并直接返回对象,但仍然是 406 错误。XML + ResponseEntity 有效。

这很奇怪,因为我看到一个非常简单的例子,其中对象被转换为 json 并出现在网络浏览器中。

所以,现在我必须了解如何获取响应并将 XML 转换为实体...

最佳答案

是的,当您的 Controller 方法用@ResponseBody 注释时,Spring 会将返回的数据转换为JSON。 .

关于java - Spring MVC @ResponseBody 返回一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20515607/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com