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

标签 android jersey jackson jersey-client

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

最佳答案

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

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

关于android - Jersey 客户端需要 Android 中缺少的 XMLInputFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17329858/

相关文章:

android - 为视频流实现 float View

java - Android Scanner 读到一个分隔符 (UseLimiter)

java - Payara/Glassfish JAX-RS 多部分

java - 对 Jersey 休息服务的并发请求

java - 如何使用jackson将Json映射到Java对象

java - jackson 映射关系

java - 为什么 Predicates.instanceOf 返回 false?

java - Android 收集和发送数据

Android - 每次单击按钮时从头开始播放相同的声音

java - 如何根据 JPA Web API 中的类型将 JSON 数据转换为两种 JSON 数组格式