我将RestEasy客户端与杰克逊提供商一起使用,并得到上述错误
客户端代码为:
ClientRequest request = new ClientRequest(url);
request.accept(MediaType.APPLICATION_JSON);
ClientResponse<String> response = request.get(String.class);
if (response.getStatus() != 200) {
throw new RuntimeException("Failed : HTTP error code : " + response.getStatus());
}
BufferedReader br =
new BufferedReader(new InputStreamReader(new ByteArrayInputStream(response.getEntity().getBytes())));
response.getEntity()
正在引发ClientResponseFailure
异常,错误为
Unable to find a MessageBodyReader of content-type application/json and type class java.lang.String
我的服务器端代码如下:
@GET
@Path("/{itemId}")
@Produces(MediaType.APPLICATION_JSON)
public String item(@PathParam("itemId") String itemId) {
//custom code
return gson.toJSON(object);
}
发布于 2012-12-06 22:29:00
您可以尝试将以下依赖项添加到maven pom中。
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson-provider</artifactId>
<version>2.3.4.Final</version>
</dependency>
发布于 2012-08-30 18:54:49
问题实际上是RestEasy找不到杰克逊的提供商。我必须通过以下代码手动注册它:
ResteasyProviderFactory instance=ResteasyProviderFactory.getInstance();
RegisterBuiltin.register(instance);
instance.registerProvider(ResteasyJacksonProvider.class);
有了它,一切都很好。但我仍然对这个解决方案不满意,因为Resteasy应该扫描提供商并自动注册它们。
发布于 2018-08-14 20:04:50
Client client = ClientBuilder.newBuilder().register(ResteasyJacksonProvider.class).build();
https://stackoverflow.com/questions/12175564
复制相似问题