3

我正在尝试在 Android 中将 Jersey 与 Jackson 一起使用,但出现以下错误:

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 的一部分,但有一些替代方案。我只是不明白为什么 Jersey 想要流式传输 XML,而不仅仅是从服务器获取它并让 Jackson 将它映射到 POJO?

4

1 回答 1

0

如果您正在寻找一种在 Android 上执行 HTTP 的巧妙方法,我会避免使用 Jersey(恕我直言,这有点重)并查看诸如Retrofit之类的库。它是一个基于注释的 REST 客户端库,运行良好。它支持不同的序列化程序,很好地支持异步等。

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

于 2015-03-17T13:47:51.960 回答