0

当使用下面的代码使用 XML 时,它工作得很好,即导航链接成功返回。但是,当我将格式更改为“json”或“application/json”时,links2 导航链接列表为空,这意味着rental.getNavigations() 返回一个空列表。

有人可以帮忙吗?我正在为 Java OData v4 使用 Apache Olingo。

谢谢

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()); 
       } 
4

1 回答 1

1

odata.metadata=full格式参数对于获取odata.navigationLink出现在 JSON 响应中的属性是必需的。构建时添加odata.metadata=full到格式选项client。完整格式应该是application/json;odata.metadata=full. 如果您可以通过对象访问请求标头client,则可以考虑Accept改为设置标头。

于 2016-03-08T19:56:45.170 回答