4

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サーバーは問題ないようです。

4

1 に答える 1

3

現在 (バージョン 0.5) - callFunctionを使用してサービス操作を呼び出すことができます。

例については、odata4j Github リポジトリの FunctionTest.java を参照してください。

お役に立てば幸いです
- ジョン

于 2011-11-26T14:36:34.973 に答える