0

我想用我的 CXF Rest Client 传输 POJO 对象。它已经适用于 JAXB 注释对象。所以我做了很多尝试。

我试过了

 reader.setEntityClass(ObjectPOJO.class);

和类似的东西

 reader.setEntityClass(JAXBElement<ObjectPOJO>.class);

两者都不起作用。对于第二次尝试,代码是错误的。我没有得到它来将实体类设置为 jaxbelement。也许它适用于它。

发送对象后:

 Response response = client.path(PATH).post(new JAXBElement<ObjectPOJO>(new QName("pojo"), ObjectPOJO.class, pojoObject));

我试图通过不同的尝试来获得我的实体。就像是:

 ObjectPOJO pojo = ((JAXBElement<TenantPOJO>) res.getEntity()).getValue();
  1. 有人知道我是否必须注册 ObjectPOJO.class 或 JAXBElement.class。如果第二次尝试是正确的,它在代码中的外观如何?
  2. 什么是让实体脱离响应的正确代码?

我的服务如下所示:

    @POST
@Consumes({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
public Response postPojo(JAXBElement<ObjectPOJO> pojo);

编辑:

错误

 ERROR org.apache.cxf.jaxrs.client.AbstractClient - .Problem with reading the response message, class : class javax.ws.rs.core.Response, ContentType : application/xml.
4

1 回答 1

0

要在 rest 客户端和 rest 服务之间传输对象 (PoJos),不需要使用显式 JAXB 转换来传输它。如果传输对象是 JAXB 注释对象,则 Jersey 容器负责必要的转换。

Response response = client.path(PATH).post(postObject);
@XmlRootElement
public class PostObject
{
////
}
于 2012-07-17T16:45:12.800 回答