【问题标题】:REST Jersey Client - unable to parse JSON into POJO classREST Jersey 客户端 - 无法将 JSON 解析为 POJO 类
【发布时间】:2023-03-17 22:55:01
【问题描述】:

我正在尝试使用 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>

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

【问题讨论】:

    标签: java json rest maven jersey-2.0


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      您似乎正在尝试访问纯文本的 wring uri。

      我能够让它与这个 uri 一起工作,这是实际的 .json 文件

      "https://gist.github.com/richersoon/ff4dd5c5abe414c5ec4c#file-user-json"
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-03
        • 1970-01-01
        • 2015-10-14
        • 2013-02-05
        • 2012-03-26
        • 1970-01-01
        相关资源
        最近更新 更多