我使用Jersey 2.17& android使用泽西制作的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它将起作用,我将得到一个有效的String。 并且Goal类有一个空的构造函数。
答案 0 :(得分:1)
今天遇到同样的问题。 您应该在类路径中添加以下依赖项:
<dependency>
<groupId>org.glassfish.jersey.media</groupId>
<artifactId>jersey-media-json-jackson</artifactId>
<version>2.23.1</version>
</dependency>
问题是Jersey客户端需要一个messageprovider来将响应json转换为Java对象。我们已经添加了json-jackson提供商。
答案 1 :(得分:0)
Erhannis评论是正确的,并为我工作。
创建{
"current_page": 1,
"per_page": 100,
"total_entries": 112,
"items": [
{
"id": 1,
"name": "vehicleA",
"state": "available",
"charge": 100
},
{
"id": 2,
"name": "vehicleB",
"state": "available",
"charge": 75
},
{
"id": 3,
"name": "vehicleB",
"state": "available",
"charge": 50
}...
时,您必须在JacksonJsonProvider
注册ClientConfig
:
Client