【发布时间】:2016-06-09 07:37:26
【问题描述】:
现在我正在学习如何构建 REST Web 服务 - 我正在尝试构建一个通过 XML(不是 JSON)进行通信的 REST 服务。
我在这里使用教程。 http://www.vogella.com/tutorials/REST/article.html
我创建了一个返回待办事项列表的 GET API
@GET
@Produces({ MediaType.TEXT_XML })
public List<ToDo> getXML()
{
ArrayList<ToDo> al = new ArrayList<ToDo>();
ToDo t = new ToDo();
t.setSummary("First ToDo");
t.setDescription("This is my first ToDo");
al.add(t);
t.setSummary("2nd Todo");
t.setDescription("This is my 2nd Todo");
al.add(t);
return al;
}
我有一个调用这个方法的客户端程序
String xmlAnswer =
target.path("rest").path("hello").request().accept(MediaType.TEXT_XML).get(String.class);
我收到以下回复
<?xml version="1.0" encoding="UTF-8" standalone="yes">
<toDoes>
<toDo>
<description>This is my 2nd Todo</description>
<summary>2nd Todo</summary>
</toDo>
<toDo>
<description>This is my 2nd Todo</description>
<summary>2nd Todo</summary></toDo>
</toDoes>
</toDoes>
但是,我确信有一种更简单的方法可以对客户端进行编程——我想获得一个 ToDo 对象数组而不是 XML。我该怎么做呢?如何为客户端 ToDo 类生成存根以及如何以 ToDo 对象数组的形式获得答案?
【问题讨论】:
-
使用
List<Todo> todos = ...get(new GenericType<List<Todo>>(){}); -
@peeskillet - 这非常有用。
-
@peeskillet - 我获取了输出 XML - 使用 xmlgrid.net/xml2xsd.html 从中创建 XSD - 然后使用 xjc 创建 ToDoes 类,然后调用 target.path("rest").path( "你好").request().accept(MediaType.TEXT_XML).get(ToDoes.class);感谢您的帮助
标签: java web-services rest frameworks jersey