我正在尝试使用 Apache CXF 实现一个 REST Web 服务,并且我想返回对象列表作为来自服务器的响应。所以我使用通用实体将我的列表包装在服务器上,当我从浏览器输入路径时一切都很好。它打印对象的 XML 表示,因为我使用了 Jackson JAX-B,但是当我尝试使用 JAX-RS 客户端时。我遇到了一个例外。
线程“主”javax.ws.rs.client.ResponseProcessingException 中的异常:读取数据时出现问题,类 XYZ,ContentType:/. 在 org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:378) 在 org.apache.cxf.jaxrs.impl.ResponseImpl.reportMessageHandlerProblem(ResponseImpl.java:433) 在 org.apache.cxf.jaxrs .impl.ResponseImpl.readEntity(ResponseImpl.java:325) at org.apache.cxf.jaxrs.impl.ResponseImpl.readEntity(ResponseImpl.java:313) at XYZ.ABC() at XYZ.ABC() 原因:javax .ws.rs.core.NoContentException:消息正文在 org.apache.cxf.jaxrs.provider.JAXBElementProvider.readFrom(JAXBElementProvider.AbstractJAXBProvider.reportEmptyContentLength(AbstractJAXBProvider.java:276) 处为空.java:166) 在 org.apache.cxf.jaxrs.utils.JAXRSUtils.readFromMessageBodyReader(JAXRSUtils.java:1325) 在 org.apache.cxf.jaxrs.impl.ResponseImpl.doReadEntity(ResponseImpl.java:369) .. . 还有 4 个
我编写了以下客户端代码来从服务器获取数据
final Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target(URI.create(PATH));
Response response = webTarget.request(MediaType.APPLICATION_XML).get();
List<ABC> obj = response.readEntity(new GenericType<List<ABC>> (ABC.class){});
但除此之外,我尝试了许多代码来实现 CXF 客户端并从服务器获取数据,但我几乎总是遇到相同的异常。我也尝试过 JAXRSCLIENTFactory 来实现客户端,但同样的例外。