odata4jライブラリを使用してJavaからWCFODataサービスにクエリを実行しようとしています。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」を見つけることができませんが、そのようなプロパティは存在しません。存在するのは、パラメーター「gac」を受け入れるサービス操作「GetStatesViewData」です。OData4jを使用してパラメーターを使用してサービス操作を呼び出すことは可能ですか?
Fiddlerまたはその他のWebデバッガーを使用している場合、「accept:application / json」ヘッダーを含むHTTPリクエストをこのODataサービスに送信すると、通常はJSONフィードを取得します。したがって、OData4jまたは私のコードのいずれかに問題があり、ODataサーバーは問題ないようです。