Jersey客户端需要Android中缺少的XMLInputFactory

时间:2013-06-26 20:29:38

标签: android jersey jackson jersey-client

我试图在Android中使用Jersey和杰克逊,但是我收到了以下错误:

Could not find class 'javax.xml.stream.XMLInputFactory', referenced from method org.glassfish.jersey.message.internal.MessagingBinders$MessageBodyProviders.configure

这是我的代码:

public static List<Task> getAllTasks() {
  WebTarget target = client.target(TARGET).path(ALL_TASKS_RESOURCE)
        .queryParam("lang", "en");
  List<Task> tasks = target.request(MediaType.APPLICATION_JSON_TYPE)
        .get().readEntity(new GenericType<List<Task>>() {});
  return tasks;
}

我发现StAX XML解析器不是Android的一部分,但有一些替代品。我只是不明白为什么泽西岛想要流式传输XML,而不仅仅是从服务器上获取它并让Jackson将它映射到POJO?

1 个答案:

答案 0 :(得分:0)

如果你正在寻找一种在Android上进行HTTP的光滑方式,我会避免使用Jersey(它有点笨笨)并查看像Retrofit这样的库。它是一个基于注释的REST客户端库,非常有效。它支持不同的序列化程序,支持异步,等等。

Square的人们有一些非常棒的库,包括OkHttp - 这是一种比内置Apache更好的http库。它甚至支持SPDY和HTTP2。