Я пытаюсь запросить службу OData WCF из Java с помощью библиотеки odata4j.Если я запрашиваю объект, используя формат ATOM, все в порядке.Если я переключаюсь на JSON, Java выдает следующее исключение:
java.lang.RuntimeException: java.lang.RuntimeException: EdmEntitySet GetStatesViewData?gac=0 not found
at org.core4j.ReadOnlyIterator.hasNext(ReadOnlyIterator.java:49)
at org.core4j.Enumerable$FuncIterator.hasNext(Enumerable.java:487)
at org.core4j.Enumerable$FuncIterator.hasNext(Enumerable.java:487)
at ... Caused by: java.lang.RuntimeException: EdmEntitySet GetStatesViewData?gac=0 not found at org.odata4j.edm.EdmDataServices.getEdmEntitySet(EdmDataServices.java:40)
at org.odata4j.internal.EdmDataServicesDecorator.getEdmEntitySet(EdmDataServicesDecorator.java:31)
at org.odata4j.format.json.JsonFeedFormatParser.parse(JsonFeedFormatParser.java:99)
at org.odata4j.format.json.JsonFeedFormatParser.parse(JsonFeedFormatParser.java:21)
at org.odata4j.consumer.OQueryRequestImpl$EntryIterator.advance(OQueryRequestImpl.java:192)
at org.core4j.ReadOnlyIterator.hasNext(ReadOnlyIterator.java:47)
... 10 more
Следующий код выдает это исключение: ODataConsumer odc =
ODataConsumer.create(FormatType.JSON, "http://localhost:6000/");
Iterator<OEntity> iterator = odc.getEntities("GetStatesViewData?gac=0").execute();
for(OEntity entity: entities)
{
..
}
OData4j не может найти объект "GetStatesViewData?gac = 0 ", но такого свойства не существует.Существует служебная операция «GetStatesViewData», которая принимает параметр «gac».Можно ли вызвать сервисную операцию с параметрами, используя OData4j?
Если я использую Fiddler или другой веб-отладчик, отправляю HTTP-запрос с заголовком «accept: application / json» этой службе OData, я обычно получаю фид JSON.Так что в OData4j или в моем коде что-то не так, сервер OData вроде бы в порядке.