getEntity调用导致崩溃(在WCF服务上使用odata4j)

时间:2011-06-03 18:08:26

标签: android wcf odata odata4j

我在我的Android应用程序中尝试odata4j从可以从WCF服务访问的数据库中检索数据。

 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没有告诉我任何内容,并且callstack似乎在ActivityThread.performLaunchActivity中被暂停。

另一方面,在我的网络浏览器中输入“http:// localhost:xxxx / Users”按预期工作,并以xml格式返回我的数据库中的用户。

关于我如何调试这个的任何想法?

3 个答案:

答案 0 :(得分:1)

记录所有http请求/响应:

ODataConsumer.dump.all(true);

uri传递给消费者.create调用应该是服务根。例如.create( “http://xxx.xx.xx.xxx:xxxx/”);否则你的代码看起来很好。

请注意,Enumerable的行为类似于.net类型 - 枚举在访问之前会延迟。如果您打算多次索引到结果中,我建议您首先调用.toList()。

让我知道你发现了什么。

希望有所帮助,
- 约翰

答案 1 :(得分:0)

我猜电话应该是:

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

create定义您要连接的服务,但Users是您要查询的资源。

答案 2 :(得分: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());

                }

        }