Вызов getEntity приводит к сбою (использование odata4j в службе WCF) - PullRequest
0 голосов
/ 03 июня 2011

Я пытаюсь использовать odata4j в своем приложении для Android, чтобы получить данные из БД, к которым можно получить доступ из службы 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 ничего мне не говорит, и вызов стека кажется приостановленным в ActivityThread.performLaunchActivity.

Ввод "http://localhost:xxxx/Users" в моем веб-браузере с другой стороны работает как ожидалось ивозвращает пользователей в моей БД в формате xml.

Есть идеи о том, как я могу это отладить?

Ответы [ 3 ]

1 голос
/ 04 июня 2011

Для регистрации всех http запросов / ответов:

ODataConsumer.dump.all(true);

URI, передаваемый потребителю .create, должен быть корнем службы. например .create ("http://xxx.xx.xx.xxx:xxxx/"); В противном случае ваш код выглядит нормально.

Обратите внимание, что Enumerable ведет себя как тип .net - перечисление откладывается до доступа. Если вы планируете многократно индексировать результаты, я бы посоветовал вам сначала вызвать .toList ().

Дайте мне знать, что вы узнаете.

Надеюсь, это поможет,
- Джон

0 голосов
/ 05 апреля 2013

Можешь попробовать таким образом.

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());

                }

        }
0 голосов
/ 03 июня 2011

Я думаю, вызов должен быть:

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

create определяет службу, к которой вы хотите подключиться, но Users - это ресурс, который вы хотите запросить.

...