我试图将java.util.List作为来自cxf rest web服务的响应。 我尝试过使用WebClient类的方法postObjectGetCollection方法,但没有运气。 我收到了 - org.apache.cxf.jaxrs.client.ClientWebApplicationException:。没有找到类的消息体读取器:interface java.util.Collection,ContentType:application / json。
以下是我的客户代码 -
String mediaType = "application/json";
if (url != null) {
List<DataTypeDTO> resultdtos = new ArrayList<DataTypeDTO>();
WebClient client = WebClient.create(url);
client = client.accept(mediaType).type(mediaType).path(uri);
resultdtos = (List<DataTypeDTO>)client.getCollection(DataTypeDTO.class);
System.out.println(resultdtos);
}
如果我遗漏任何配置或其他事情,请帮助我。
答案 0 :(得分:1)
您需要在rest客户端中创建webClient对象时提供提供者列表。 您可以使用以下代码来解决您的问题:
final String url = "http://localhost:10227/someService";
final String uri = "/manageXyz/fetchAllDataTypes";
final String mediaType = "application/json";
Object response = null;
List<Object> providers = new ArrayList<Object>();
providers.add( new JacksonJaxbJsonProvider() );
WebClient client = WebClient.create(url, providers);
client = client.accept(mediaType).type(mediaType).path(uri);
response = (List<Object>)client.post(oemUser, List.class);
如果您使用的是maven,还需要提供以下必需的jar来解决项目中的maven依赖关系:
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-jaxrs</artifactId>
<version>1.5.4</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.13</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-xc</artifactId>
<version>1.9.13</version>
</dependency>