java - REST Jersey 客户端 - 无法将 JSON 解析为 POJO 类

标签 java json rest maven jersey-2.0

我正在尝试使用 jersey 2.13 构建一个休息客户端。

其余端点位于:https://gist.githubusercontent.com/richersoon/ff4dd5c5abe414c5ec4c/raw/4ce49c32e57bf071d052f7efa76f332d60308035/user.json

但是当我尝试运行该应用程序时,我得到:

Exception in thread "main" org.glassfish.jersey.message.internal.MessageBodyProviderNotFoundException: MessageBodyReader not found for media type=text/plain, type=class com.napier.entity.User, genericType=class com.napier.entity.User.
    at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor$TerminalReaderInterceptor.aroundReadFrom(ReaderInterceptorExecutor.java:173)
    at org.glassfish.jersey.message.internal.ReaderInterceptorExecutor.proceed(ReaderInterceptorExecutor.java:134)
    at org.glassfish.jersey.message.internal.MessageBodyFactory.readFrom(MessageBodyFactory.java:988)
    at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:833)
    at org.glassfish.jersey.message.internal.InboundMessageContext.readEntity(InboundMessageContext.java:768)
    at org.glassfish.jersey.client.InboundJaxrsResponse.readEntity(InboundJaxrsResponse.java:96)
    at org.glassfish.jersey.client.ScopedJaxrsResponse.access$001(ScopedJaxrsResponse.java:56)
    at org.glassfish.jersey.client.ScopedJaxrsResponse$1.call(ScopedJaxrsResponse.java:77)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:315)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:297)
    at org.glassfish.jersey.internal.Errors.process(Errors.java:228)
    at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:397)
    at org.glassfish.jersey.client.ScopedJaxrsResponse.readEntity(ScopedJaxrsResponse.java:74)
    at com.napier.service.rest.UsersClient.main(UsersClient.java:20)

代码如下:

public class UsersClient {
    public static void main(String[] args) {
        Client client = ClientBuilder.newClient();
        WebTarget target = client.target(
                UriBuilder.fromUri(
                        "https://gist.githubusercontent.com/richersoon/ff4dd5c5abe414c5ec4c/raw/4ce49c32e57bf071d052f7efa76f332d60308035/user.json"));

        Response response = target.request().accept(MediaType.APPLICATION_JSON).get(Response.class);
        User user = response.readEntity(User.class);
        System.out.println(user);
    }
}

这是 POJO:

@XmlRootElement
public class User {

    private String firstname;
    private String lastname;
    private String photourl;

    ... setters and getters...
}

这是 POM:

<dependency>
    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-client</artifactId>
    <version>2.13</version>
</dependency>

    <dependency>
        <groupId>org.glassfish.jersey.media</groupId>
        <artifactId>jersey-media-moxy</artifactId>
        <version>2.13</version>
    </dependency>

请指导我,因为我对网络服务完全陌生。

最佳答案

您的客户端正在接受媒体类型“application/json”的结果,但您的 REST Web 服务返回“text/plain”。检查这篇文章以查看可能的解决方案:MessageBodyReader not found for media type=application/octet-stream

关于java - REST Jersey 客户端 - 无法将 JSON 解析为 POJO 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26252526/

相关文章:

java - 无法使用log4j生成错误文件

java - 为什么 invokevirtual 的目标类型从 javac target 1.1 更改为 1.2?

java - java语言规范上下文中的 "binary name of a class"是什么?

Python 到 Json 的转换

rest - 使用 REST API 存储、流式传输视频和处理请求

java - 如何从其 JPanel 内容更改 JDialog 图标?

javascript - 以 json 形式传递表

c# - 在 C# 中解析为 JSON

java - 是否值得测试 json 响应的值

rest - 通过调用 rest-api 更新 tfs 的 wiki 页面