まず、OData4j を使った作業がまったくないということから始めましょう。
Web サービスからいくつかの OData を消費する必要がある Android アプリ (Eclipse を使用) を構築しています。既に正常に動作する iPad アプリがあるので、Web サービスは問題ないと思います。
すべての Web 要求が機能するには基本認証が必要であり、ブラウザーを使用して呼び出しを行い、使用している URL と資格情報が有効であることを確認できます。
これまでのところ、私はこのコードを持っています:
ODataConsumer.Builder builder = ODataConsumers.newBuilder(url);
builder.setClientBehaviors(new BasicAuthenticationBehavior(LoginUsername, LoginPassword));
ODataConsumer c = builder.build();
for(OEntity entity : c.getEntities("entry").execute()){
System.out.println(entity.getProperty("name").getValue().toString());
}
現在、Eclipse デバッガーはfor
、おそらく.execute()
呼び出し中に回線で失敗します。デバッガーは私には何の助けにもなりません.LogCatで半分関連しているように見える唯一の行は次のとおりです。
編集:@JohnSpurlockの答えの後、私はもう少し先に進みました。全体的に同じ問題ですが、新しいエラー メッセージ:
BadRequestException: リクエスト URI が無効です。セグメント「ドキュメント」はコレクションを参照するため、これはリクエスト URL の最後のセグメントである必要があります。すべての中間セグメントは、単一のリソースを参照する必要があります。
他にもメッセージがありますが、主にスレッドに関するものです。このメソッドはAsyncTask内から呼び出されていることに注意してくださいAsyncTask
。
私のXML結果の検閲され短縮されたバージョン(ブラウザ経由)は次のようになります。
<feed xml:base="http://a.example.com/OData.svc/"
xmlns:d="http://schemas.microsoft.com/ado/2007/08/dataservices"
xmlns:m="http://schemas.microsoft.com/ado/2007/08/dataservices/metadata"
xmlns="http://www.w3.org/2005/Atom">
<entry>
<name>one</name>
</entry>
<entry>
<name>two</name>
</entry>
</feed>