2016-03-08 64 views
0

當使用XML使用以下代碼時,導航鏈接完美工作,即導航鏈接成功返回。但是,當我將格式更改爲「json」或「application/json」時,links2導航鏈接列表爲空,表示rental.getNavigations()返回空列表。使用JSON for OData時不會返回導航鏈接(使用Apache Olingo for Java)

任何人都可以幫忙嗎?我正在使用Apache Olingo進行Java OData v4。

感謝

URI uri = client.newURIBuilder(serviceRoot) 
       .appendEntitySetSegment("Rentals") 
       .appendKeySegment(1).format("application/xml").build(); 

ODataRetrieveResponse<ODataEntity> response2 = client.getRetrieveRequestFactory().getEntityRequest(uri).execute(); 
ODataEntity rental = response2.getBody(); 

     List<ODataLink> links2 = rental.getNavigationLinks(); 
     for (ODataLink link : links2) { 
      System.out.println(link.getRel()); 
      System.out.println(link.getName()); 
      URI linkUri = client.newURIBuilder(serviceRoot) 
         .appendNavigationSegment(link.getLink().toString()).format("atom").build(); 
      ODataRetrieveResponse<ODataEntity> responseCustomer 
        = client.getRetrieveRequestFactory().getEntityRequest(linkUri).execute(); 
      ODataEntity cust = responseCustomer.getBody(); 
      if(link.getName().equals("Stock")) 
       System.out.println(cust.getProperty("Status").getValue().toString()); 
      else System.out.println(cust.getProperty("Name").getValue().toString()); 
     } 
+0

Hi @ user3423878。如果我的答案已經解決了您的問題,請考慮通過點擊複選標記來接受它。這向更廣泛的社區表明,您已經找到了解決方案,併爲答覆者和您自己提供了一些聲譽。沒有義務這樣做。 – lencharest

+0

添加odata.metadata =完整格式選項時,OData服務會輸出一條異常消息,指出該服務不接受metadata = full格式。有任何想法嗎?謝謝 – user3423878

+0

什麼是確切的錯誤信息? – lencharest

回答

1

odata.metadata=full格式參數是必要得到odata.navigationLink屬性出現在JSON響應。在構建client時將odata.metadata=full添加到格式選項。完整格式應爲application/json;odata.metadata=full。如果您可以通過client對象訪問請求標頭,則可以考慮設置Accept標題。