我有一个像这样定义的JAX-RS服务:
@Produces(MediaType.APPLICATION_JSON)
@GET
@Path("/namestartswith")
public List<ProductBrand> nameStartsWith(@QueryParam("name") String name) {
List<ProductBrand> productBrandList = productBrandService.findByNameStartsWith(name);
System.out.println("productBrandList: " + productBrandList);
return productBrandList;
}
发出以下网址:
http://localhost:19191/productbrand/namestartswith?name=f
产生
{"productBrand":[{"brandImage":"ffbrand.png","description":"the brand called ff","id":"1","name":"ffbrand"},{"brandImage":"flfl.png","description":"flfl","id":"6","name":"flfl"},{"brandImage":"ffbran.png","description":"ffbr","id":"16","name":"ffbran"}]}
表示该服务按预期工作。
现在我使用RestEasy进行客户端访问。
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>${resteasy.version}</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>${resteasy.version}</version>
</dependency>
以下代码访问服务:
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:19191/productbrand/namestartswith?name=" + name);
Response restEasyResponse = target.request(MediaType.APPLICATION_JSON).get();
log("entity: " + restEasyResponse.readEntity(new GenericType<List<ProductBrand>>() {
}););
输出结果为:
entity:null
即使致电restEasyResponse.getEntity()
,也会返回null
。什么可能是错的?
答案 0 :(得分:6)
我有一个类似的问题,我使用以下方法解决它:
restEasyResponse.readEntity(List.class)
它将返回一个List&lt; Map&lt; String,Object&gt;&gt;其中每个项目代表json数组的一个元素。