2

我在客户响应中获取 Jersey Generic List 时遇到问题。出于某种原因,我需要将其作为实体。

@XmlRootElement(name="list")
@XmlSeeAlso({RESTDomain.class})
public class JAXBContainer<T> {
    private List<T> items = new ArrayList<T>();

    public JAXBContainer() { }

    public JAXBContainer(List<T> items) {
        this.items = items;
    }

    @XmlElementWrapper(name="items")
    @XmlAnyElement(lax=true)
    public List<T> getItems() {
        return items;
    }

    public void setItems(List<T> items) {
        this.items = items;
    }

    @XmlAttribute
    public int getItemsSize() {
        return this.items.size();
    }

以上是我对响应的通用列表

 @GET
    @Produces({MediaType.APPLICATION_XML})
    public Response getREST(){  
        RESTDomain domain = new RESTDomain();
        domain.setName("Adams");
        domain.setPlace("Zurich");
        List<RESTDomain> restDomains = new ArrayList<RESTDomain>();
        restDomains.add(domain);        
        JAXBContainer<RESTDomain> jAXBContainer= new JAXBContainer<RESTDomain>(restDomains);        
        GenericEntity<JAXBContainer<RESTDomain>> genericEntity = new GenericEntity<JAXBContainer<RESTDomain>>(jAXBContainer){};


        return Response.ok(genericEntity).build();

    }

我返回带有 genericEntity 的容器。我知道只有在 genericEntity 中的 List 我可以在我的客户端获取我的实体,但问题是我需要使用我的 JAXBContainer 出于某种原因。

 @Test
            public void restGet() throws JAXBException{     
                ClientConfig cc = new DefaultClientConfig();        
                client = Client.create(cc);
            String baseURI ="http://localhost:3555/SampleREST/rest/sample";
                    WebResource webResource = client.resource(baseURI);         
                    JAXBContainer<RESTDomain> jAXBContainer= webResource.get(new GenericType<JAXBContainer<RESTDomain>>(){});         
                     System.out.println("response:: "+jAXBContainer.getItemsSize());
    }

我的问题是我得到的响应是 JAXBContainer 和 GenericType,但容器的大小是 0。我在这里缺少什么?我是否必须使用任何编组和解组机制。

但是当我在浏览器中请求这个 URI 时,我得到了格式正确的 XML,但是它在客户端失败了,或者我们有任何其他方法可以在客户端中提取实体。提前致谢

4

1 回答 1

0

我没有看到您在客户端的任何位置设置接受内容类型。尝试: webResource.accept("application/xml")

于 2013-06-08T14:42:26.197 回答