2014-03-27 74 views
1

我想從cxf rest web服務獲取java.util.List作爲響應。 我嘗試過使用WebClient類的方法postObjectGetCollection方法,但沒有運氣。 我越來越 - org.apache.cxf.jaxrs.client.ClientWebApplicationException:。沒有發現消息正文讀者爲類:接口java.util.Collection,ContentType:應用程序/ json。無法從cxf rest web服務獲取收集響應

下面是我的客戶端代碼 -

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); 
     } 

請幫我,如果我錯過任何配置或其他東西。

回答

1

您需要在您的休息客戶端中創建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,您還需要提供以下所需的罐子來解決你的項目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>