1

我正在尝试创建一个 jax-rs 客户端,它将 xml 作为对象发布并从服务器的响应正文中接收 xml。代码如下:

import org.apache.cxf.jaxrs.client.WebClient;
..
TravelRequest tr = ...
..
WebClient client = WebClient.create(url);
client.type(javax.ws.rs.core.MediaType.APPLICATION_XML_TYPE).accept(javax.ws.rs.core.MediaType.APPLICATION_XML_TYPE);
javax.ws.rs.core.Response r = client.post(tr);
Object response = r.getEntity();

响应对象的 java 类型是 sun.net.www.protocol.http.HttpURLConnection$HttpInputStream 是否可以获取 TravelRequest 类型的对象而不是从输入流中读取 xml?有人知道它的任何例子吗?我也可以使用 spring 来配置我的客户端。任何帮助,将不胜感激。

4

2 回答 2

1

你用WebClient错了方法。类似accepttype不'改变WebClient返回更新的客户端的方法

所以正确的用法是:

WebClient client = WebClient.create(url);
Response response = client.type(...).accept(...).post(tr);

然后Response.getEntity()可用于提取响应。

CXF 支持各种形式的数据绑定,您可以使用这些数据绑定将响应主体映射到您的类。

于 2012-11-05T08:00:32.320 回答
1

这就是它的完成方式。

TravelRequest travelRequest = client.post(tr, TravelRequest.class);

希望这会对某人有所帮助。

于 2014-10-18T11:42:29.210 回答