java - 找不到媒体类型 = application/json 的 MessageBodyReader - android

标签 java android jersey jersey-2.0 jersey-client

我正在使用 Jersey 2.17 和 android 来使用 Jersey 制作的 Web api。

我收到错误

org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=application/json, type=class [Lcom.entities.Goal;, genericType=class [Lcom.entities.Goal;

我收到错误

 public static Goal[] getGoals(String path){
        WebTarget webResource = getClient().target(ROOT + path);
        Invocation.Builder builder = webResource.request(MediaType.APPLICATION_JSON_TYPE);
        return builder.get(Goal[].class); // this line gives error
    }

我导入了库

 compile 'org.glassfish.jersey.core:jersey-client:2.17'

我尝试添加一些 json 库,但大多数都会给我带来构建错误,例如多个 dex 等。

如果我选择 String.class 它将起作用,并且我将得到一个有效的字符串。 而且 Goal 类也有一个空的构造函数。

最佳答案

Erhannis 的评论是正确的并且对我有用。

创建 Client 时,您必须使用 ClientConfig 注册 JacksonJsonProvider:

ClientBuilder.newClient(new ClientConfig(JacksonJsonProvider.class))

关于java - 找不到媒体类型 = application/json 的 MessageBodyReader - android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30291152/

相关文章:

java - io.grpc.netty.NettyServerTransport 通知终止

java - 如何找出哪个变量抛出异常?

Android 启动器图标未显示

java - 导致此异常 "HTTP 500 Erreur Interne de Servlet"的可能原因是什么?

spring - 让 Spring 意识到 Jersey 过滤器

java - 经典的读者-作者算法——使用单个锁有什么问题吗?

java - 链表上的归并排序

android - LibGDX 样板代码 NullPointerException

android - - ddms] 传输错误 : open failed:Permission denied

java - Spring引导+ Jersey API+JPA : failed to lazily initialize a collection of role