2010-04-20 2 views
1

Приложение, над которым я работаю, имеет автономную базу данных. Единственный раз, когда мне нужен HTTP-запрос, - это когда пользователь сначала загружает приложение.Blackberry Асинхронные запросы HTTP - как?

Я делаю это путем вызова класса, который проверяет, существует ли локальная БД и, если нет, то создайте его со следующей просьбой:

HttpRequest data = new HttpRequest("http://www.somedomain.com/xml", "GET", this); data.start(); 

Этот XML возвращает список контента, все из которых есть изображения, которые я хочу получить ПОСЛЕ того, как исходный запрос будет завершен и сохранен.

Так что-то вроде этого не будет работать:

HttpRequest data = new HttpRequest("http://www.somedomain.com/xml", "GET", this); data.start(); 
HttpRequest images = new HttpRequest("http://www.somedomain.com/xmlImages", "GET", this); images.start(); 

Поскольку он не будет рассматривать это как асинхронный запрос. Я не нашел много информации о добавлении обратных вызовов к httpRequest или любого другого метода, который я мог бы использовать, чтобы гарантировать, что операция 2 не выполняется до завершения операции 1.

Любая помощь будет оценена по достоинству. Спасибо

ответ

1

В J2ME нет встроенного асинхронного HTTP-запроса. Вы просто do it manually с потоками. В частности, посмотрите пример в конце ссылки, в которой выполняется асинхронная передача сообщений.

1

спасибо. Ссылка была расплывчатой ​​и не совсем то, что я искал, но это помогло мне по пути, который сработал. Не уверен, насколько эффективно это, но это основной результат:

HttpRequest data = new HttpRequest("http://www.somedomain.com/xml", "GET", this); 
    data.start(); 
    HttpRequest images = new HttpRequest("http://www.somedomain.com/xmlImages", "GET", this); 
    images.start(); 
    try { 
     data.join(); 
     images.join(); 
    } catch (InterruptedException e) { 

    } 

также методы в классе базы данных, в которых хранятся результаты запроса HTTP синхронизированы, для кого-то еще, что может иметь этот вопрос.