2016-06-22 85 views
2

即时通讯尝试实现超媒体API的春天Android客户端与HAL格式的响应。 Spring HATEOAS - 参考文档描述了受Traverson JavaScript库启发的客户端服务遍历的实现。 我这样做是这样的:Android春天HATEOAS REST API客户端支持与Traverson

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响应?

+0

没有综合图书馆。每个HATEOAS服务都需要为它编写的客户端。 – naXa

回答

0

尽我所知,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已针对spring-hateoas项目发布以支持Android,但它在我写这篇文章时已关闭(前两天我写这篇文章)时说:“我们目前无法将资源委托给这样的平台特定功能”。 (另一方面,别人seems to be having success与上述方法,所以也许这是值得追求?)

迈克凯利,在他的HAL标准的文件中,提供了支持HAL的list of libraries。目前我正在制定一个基于HalBuilder的解决方案,目前看起来很有希望。 Dr:Spring's Traverson在您没有付出很多努力的情况下不会工作。你可能会更好地建立自己的。使用您最喜欢的HTTP库以及HAL库,并且您大部分都是在那里。