2016-06-22 124 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庫,並且您大部分都是在那裏。