0

Android クライアント コンシューマーの odata4j で ext 関数を呼び出す際に問題が発生しています。例えば、Netflix公共サービスの機能「映画」。

関数のメタデータ:

<FunctionImport Name="Movies" EntitySet="Titles" ReturnType="Collection(Netflix.Catalog.v2.Title)" m:HttpMethod="GET"/>

と私のコード:

ODataConsumer c = ODataConsumer.create("http://odata.netflix.com/Catalog/");
c.dump.all(true);
Enumerable<OObject> e = c.callFunction("Movies").execute();

この callFunction メソッドでは、次のエラーで終了します。

01-27 10:03:49.796: E/AndroidRuntime(264): Uncaught handler: thread main exiting due to uncaught exception 
01-27 10:03:49.815: E/AndroidRuntime(264): java.lang.NoSuchMethodError: org.w3c.dom.Text.getTextContent
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.core4j.xml.XContainer.parseNode(XContainer.java:67)
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.core4j.xml.XDocument.<init>(XDocument.java:26)
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.core4j.xml.XDocument.load(XDocument.java:90)
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.core4j.xml.XDocument.parse(XDocument.java:73)
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.odata4j.consumer.ODataClient.dumpResponseBody(ODataClient.java:263)
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.odata4j.consumer.ODataClient.doXmlRequest(ODataClient.java:247)
01-27 10:03:49.815: E/AndroidRuntime(264):  at org.odata4j.consumer.ODataClient.getMetadata(ODataClient.java:69)
...

興味深いのは、c.dump.all(true) で行を削除すると、callFunction にエラーはありませんが、データにアクセスできません。

01-27 13:25:33.795: E/AndroidRuntime(534): Caused by: java.lang.UnsupportedOperationException: Not supported yet.
01-27 13:25:33.795: E/AndroidRuntime(534):  at org.odata4j.format.FormatParserFactory$AtomParsers.getCollectionFormatParser(FormatParserFactory.java:125)
01-27 13:25:33.795: E/AndroidRuntime(534):  at org.odata4j.format.FormatParserFactory.getParser(FormatParserFactory.java:52)
01-27 13:25:33.795: E/AndroidRuntime(534):  at org.odata4j.consumer.ConsumerFunctionCallRequest$FunctionResultsIterator.advance(ConsumerFunctionCallRequest.java:196)
01-27 13:25:33.795: E/AndroidRuntime(534):  at org.core4j.ReadOnlyIterator.hasNext(ReadOnlyIterator.java:48)
...

callFunction メソッドを正しく理解しているかどうかはわかりません。関数のメタデータ エントリに EntitySet 属性と ReturnType 属性がありますが、OObject として結果にアクセスできると思います。それとも私が間違っていますか?関数の応答を取得してそのデータにアクセスする方法の例はありますか。誰でもこれで私を助けてくれませんか。どうもありがとうございました。

ジリ

4

2 に答える 2

0

私は同じ問題に遭遇しました。例外エラー メッセージが示すように、Odata4j 0.5 は現在、関数呼び出しからの応答を処理しません。ソースコードを見れば分かると思います。

于 2012-02-03T13:01:02.773 に答える