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