首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >找不到内容类型为MessageBodyReader /json且类型为java.lang.String的应用程序

找不到内容类型为MessageBodyReader /json且类型为java.lang.String的应用程序
EN

Stack Overflow用户
提问于 2012-08-29 18:10:37
回答 7查看 47.6K关注 0票数 22

我将RestEasy客户端与杰克逊提供商一起使用,并得到上述错误

客户端代码为:

代码语言:javascript
复制
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异常,错误为

代码语言:javascript
复制
Unable to find a MessageBodyReader of content-type application/json and type class java.lang.String

我的服务器端代码如下:

代码语言:javascript
复制
@GET
@Path("/{itemId}")
@Produces(MediaType.APPLICATION_JSON)
public String item(@PathParam("itemId") String itemId) {
  //custom code

  return gson.toJSON(object);
}
EN

回答 7

Stack Overflow用户

发布于 2012-12-06 22:29:00

您可以尝试将以下依赖项添加到maven pom中。

代码语言:javascript
复制
   <dependency>
    <groupId>org.jboss.resteasy</groupId>
    <artifactId>resteasy-jackson-provider</artifactId>
    <version>2.3.4.Final</version>
   </dependency>
票数 58
EN

Stack Overflow用户

发布于 2012-08-30 18:54:49

问题实际上是RestEasy找不到杰克逊的提供商。我必须通过以下代码手动注册它:

代码语言:javascript
复制
   ResteasyProviderFactory instance=ResteasyProviderFactory.getInstance();
    RegisterBuiltin.register(instance);
    instance.registerProvider(ResteasyJacksonProvider.class);

有了它,一切都很好。但我仍然对这个解决方案不满意,因为Resteasy应该扫描提供商并自动注册它们。

票数 8
EN

Stack Overflow用户

发布于 2018-08-14 20:04:50

代码语言:javascript
复制
Client client = ClientBuilder.newBuilder().register(ResteasyJacksonProvider.class).build();
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12175564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档