当前位置: 首页 > 知识库问答 >
问题:

AndroidSpringHATEOAS REST API客户端支持Traverson

莫典
2023-03-14

我正在尝试为超媒体API实现一个spring android客户端,并以HAL格式响应。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响应?

共有1个答案

澹台聪
2023-03-14

据我所知,Spring的Traverson实现在Android中不可用,因为它是Spring HATEOAS模块的一部分,该模块依赖于Spring core,而Spring core最终依赖于JDK对StAX的实现。Android没有一个StAX实现,因为它在javax中* 软件包,Android运行时将不允许您加载一个。

在一篇博客文章中,Josh Long描述了将Spring Social和Spring Security应用于Android的过程;从本质上讲,您必须去掉它们的大部分依赖项,并有选择地只重新添加所需的依赖项。然而,您无法处理像JAXB或STaX这样的软件包,这些软件包的Android实现不兼容或缺失,因此您必须重写依赖于它们的代码,以使用其他软件包。

有人针对spring hateoas项目发布了一个支持Android的请求,但该请求已被关闭(两天前,我写这篇文章时),并发表了一条评论:“我们目前无法向这样一个特定于平台的功能投入资源”。(另一方面,其他人似乎用上述方法取得了成功,所以也许值得追求?)

Mike Kelly在关于HAL标准的文档中提供了支持HAL的库的列表。目前,我正在基于HalBuilder设计一个解决方案,目前看来很有希望。

tl;dr:如果你不付出很多努力,Spring的Traverson就不会成功。你最好自己建造一个。将您最喜欢的HTTP库与HAL库一起使用,您就可以做到这一点。

 类似资料:
  • Now that you are the proud owner of a Packt book, we have a number of things to help you to get the most from your purchase.

  • 第一个twisted支持的诗歌服务器 尽管Twisted大多数情况下用来写服务器代码,但为了一开始尽量从简单处着手,我们首先从简单的客户端讲起。 让我们来试试使用Twisted的客户端。源码在twisted-client-1/get-poetry.py。首先像前面一样要开启三个服务器: python blocking-server/slowpoetry.py --port 10000 poetry

  • 我想知道如何将缓存配置添加到Vertx http web客户端。 使用Apache http客户端,我可以轻松地设置setCacheConfig 有什么想法吗?

  • 我们需要在couchbase客户端和couchbase集群之间实现ssl通信。我正在使用spring数据couchbase客户端api与couchbase集群进行交互,这个api的问题是我没有找到任何属性在couchbase客户端上启用ssl,你能帮我在couchbase客户端上配置ssl吗。

  • ★表示该语言的推荐客户端。 ActionScript as3redis Repository cwahlers C hiredis ★ Repository antirez pnoordhuis 这是官方的C语言客户端。支持全部的set命令,管道,事件驱动编程 credis Repository libredis Repository 通过poll,ketama哈希支持在多服务器上并行执行命令 C

  • 问题内容: 我正在使用需要支持以下方案的GWT应用程序: 服务器位于时区A 客户端的浏览器设置为时区B GWT应用程序配置为在时区C中显示日期/时间 由于GWT不支持Calendar,并且不存在对javascript时区的本地支持,因此我无法想到一个解决此问题的好方法。 你们有没有做过类似的事情,或者您知道我可以使用的任何好工具吗? 谢谢! 问题答案: 以我的经验,在处理gwt中的日期和时区时,以