0

WCF サービスからアクセスできる DB からデータを取得するために、Android アプリで odata4j を試しています。

 ODataConsumer co = ODataConsumer.create("http://xxx.xx.xx.xxx:xxxx/Users");
 for(OEntity user : co.getEntities("Users").execute())
 {
      // do stuff
 }

ただし、これは getEntities の呼び出しでクラッシュします。私は他のさまざまな呼び出しも試しました。

 Enumerable<OEntity> eo = co.getEntities("Users").execute();            
 OEntity users = eo.elementAt(0);

ただし、これも eo.elementAt(0) でクラッシュします。

logcat には何も表示されず、コールスタックは ActivityThread.performLaunchActivity で中断されているようです。

一方、Web ブラウザーに「http://localhost:xxxx/Users」と入力すると、期待どおりに機能し、DB のユーザーが xml 形式で返されます。

これをデバッグする方法についてのアイデアはありますか?

4

3 に答える 3

1

すべての http 要求/応答をログに記録するには:

ODataConsumer.dump.all(true);

consumer .create 呼び出しに渡される uri は、サービス ルートである必要があります。例 .create("http://xxx.xx.xx.xxx:xxxx/"); それ以外の場合、コードは正常に見えます。

Enumerable は .net タイプのように動作することに注意してください - 列挙はアクセスするまで延期されます。結果に複数回インデックスを付ける予定がある場合は、最初に .toList() を呼び出すことをお勧めします。

あなたが見つけたことを教えてください。

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

于 2011-06-03T20:39:17.253 に答える
0

呼び出しは次のようにする必要があると思います:

ODataConsumer co = ODataConsumer.create("http://xxx.xx.xx.xxx:xxxx");
for(OEntity user : co.getEntities("Users").execute())
{
     // do stuff
}

create接続したいサービスを定義しますがUsers、クエリしたいリソースです。

于 2011-06-03T18:20:47.117 に答える
0

この方法を試すことができますか。

OEntity oEntity;     
         OQueryRequest<OEntity>  oQueryRequest=  oDataJerseyConsumer.getEntities(entityName);
         List<OEntity>  list=  oQueryRequest.execute().toList();

         for (OEntity o : list) {
                List<OProperty<?>> props = o.getProperties();
                for (OProperty<?> prop : props) {
                    System.out.println(prop.getValue().toString());

                }

        }
于 2013-04-05T12:48:09.447 に答える