gpt4 book ai didi

java - Traverson 的 Android spring HATEOAS REST API 客户端支持

转载 作者:行者123 更新时间:2023-11-30 10:42:50 24 4
gpt4 key购买 nike

我正在尝试为具有 HAL 格式响应的超媒体 API 实现一个 spring android 客户端。 Spring HATEOAS - 引用文档描述了受 Traverson JavaScript 库启发的客户端服务遍历的实现。我这样做:

    Traverson traverson = null;
try {
traverson = new Traverson(new URI(getString(R.string.api_test_uri)), MediaTypes.HAL_JSON);
} catch (URISyntaxException e) {
e.printStackTrace();
}
String name = traverson.follow("movies", "movie", "actor").
withTemplateParameters(parameters).
toObject("$.name");

但是我在创建新的 Traverson 对象时遇到以下错误:

java.lang.NoClassDefFoundError: org.springframework.hateoas.hal.HalLinkDiscoverer

有人知道怎么解决吗?

可能有其他/更好的方法来支持 android 中的 HAL 响应吗?

最佳答案

据我所知,Spring 的 Traverson 实现在 Android 中不可用,因为它是 Spring HATEOAS 模块的一部分,它依赖于 spring-core,最终取决于 JDK 对 StAX 的实现。 . Android 没有 StAX 实现,因为它位于 javax.* 包中,Android 运行时 won't allow you to load one .

blog post 中, Josh Long 描述了适配 Spring Social 和 Spring Security 以在 Android 上工作的过程;本质上,您必须去除它们的大部分依赖项,并有选择地只重新添加您需要的依赖项。 However ,您无法解决 JAXB 或 STaX 等 Android 实现不兼容或缺失的包,因此您必须重写依赖于它们的代码以使用其他东西。

A request已针对支持 Android 的 spring-hateoas 项目发布,但它已关闭(我写这篇文章的两天前),评论为“此时我们无法将资源提交给此类特定于平台的功能”。 (另一方面,其他人 seems to be having success 使用上述方法,所以也许值得追求?)

Mike Kelly 在他关于 HAL 标准的文档中提供了一个 list of libraries支持HAL。我目前正在整理一个基于 HalBuilder 的解决方案,到目前为止看起来很有希望。

tl;dr:如果您不付出很多努力,Spring 的 Traverson 将无法工作。您最好自己构建。将您最喜欢的 HTTP 库与 HAL 库结合使用,您就完成了大部分工作。

关于java - Traverson 的 Android spring HATEOAS REST API 客户端支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37963941/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com