簡體   English   中英

Odata ClientEntity錯誤-預期的OData實體,找到了EntitySet

[英]Odata ClientEntity Error - Expected OData Entity, found EntitySet

我正在嘗試使用Olingo連接到Odata v4服務,該服務已通過羅斯文(Northwind)示例進行了測試,並且可以在瀏覽器中獲取產生的URI: 我總是得到以下

error:java.lang.IllegalArgumentException:org.apache.olingo.commons.api.serialization.ODataDeserializerException:
com.fasterxml.jackson.core.JsonParseException: Expected OData Entity, found
EntitySet.

ODataEntityRequest<ClientEntity> reqEntity = client.getRetrieveRequestFactory().getEntityRequest(entityURI);
                ODataRetrieveResponse<ClientEntity> entity = reqEntity.execute();
            ClientEntity ce = (ClientEntity)entity.getBody();

在最后一行,我得到了錯誤。

ClientEntity ce = (ClientEntity)entity.getBody();

此錯誤意味着您正在查詢類似http://services.odata.org/V4/Northwind/Northwind.svc/Categories的集合URL。 對此的響應是EntitySet

但是,似乎您想要一個Entity 可以從類似http://services.odata.org/V4/Northwind/Northwind.svc/Categories(1)的URL獲得,其中(1)對應於您要獲取的Category的ID。

2種選擇:

  • 如果需要單個Entity ,則創建一個適當的URI,例如ODataClientFactory.getClient().newURIBuilder("http://services.odata.org/V4/Northwind/Northwind.svc").appendEntitySetSegment("Categories").appendKeySegment(1).build()並對此執行請求(我認為您甚至可以跳過強制轉換)
  • 如果需要EntitySet ,請針對您的uri進行getEntitySetRequest ,然后在execute()方法的結果上使用getBody().getEntities()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM