Навигационные ссылки не возвращаются при использовании JSON для OData (с использованием Apache Olingo для Java)
При использовании приведенного ниже кода с использованием XML он работает отлично, то есть навигационные ссылки возвращаются успешно. Однако, когда я изменяю формат на "json" или "application/json", список навигационных ссылок links2 становится пустым, что означает, что rental.getNavigations() возвращает пустой список.
Может кто-нибудь помочь, пожалуйста? Я использую 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());
}
1 ответ
odata.metadata=full
параметр формата необходимо получить odata.navigationLink
свойства, отображаемые в ответе JSON. добавлять odata.metadata=full
к варианту формата при построении client
, Полный формат должен быть application/json;odata.metadata=full
, Если у вас есть доступ к заголовкам запроса через client
объект, вы могли бы рассмотреть возможность установки Accept
заголовок вместо.