Покажите мне способ асинхронного подключения веб-сервисов на Android - PullRequest
1 голос
/ 10 октября 2011
  1. Я не использую ksoap2
  2. Вызовы должны быть асинхронными, потому что другой способ сота не принимает, и это исключение http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html
  3. Я получаю коды изNET и Android имеют совершенно другую архитектуру, чем .NET.Из-за этого, когда вы оставляете комментарий, обратите внимание на этот факт.
  4. В кодовом блоке я буду вызывать разные веб-методы как минимум 5 или 6 раз.
  5. структура кода выглядит следующим образом

    public void X(){
        int a = webMethodA();
        . doSomethingWith a
        .
        .
        b = webMethodB(a);
        .
        . doSomethingWith b
        .
        .
        c = webMethod(b);
        .
        . 
        .
    }
    
  6. Я пытался сделать это с помощью asyncTask и Handler, я мог бы принять значение результата, но проблема вЯ не мог обработать значение результата в методе X.Я должен использовать возвращаемые значения в блоке метода X

1 Ответ

0 голосов
/ 10 октября 2011

Для наборов данных .net лучше хранить ваши данные в ваших собственных коллекциях объектов, которые могут быть одинаковыми в Webservice и Android.например, определите класс Person в веб-сервисе и Android, которые одинаковы, и доставьте его.

вы можете использовать json в .Net и Android для сериализации и десериализации ваших объектов в строку json вместо использования .Net xml.

для многопоточности этот код ваш ответ?

protected void btnCallWebservice_onClick() {

    final Runnable r = new Runnable()
    {
        public void run()
        {
            threadWebservice();
        }
    };

    performOnBackgroundThread(r);

}



public Thread performOnBackgroundThread(final Runnable runnable) {
    final Thread t = new Thread() {
        @Override
        public void run() {
            try {
                runnable.run();
            } finally {

            }
        }
    };
    t.start();
    return t;
}



private void threadWebservice() {
    try {
        // call your webservice here
    } catch (final Exception e) {

    }
}
...