Отправка нескольких запросов HTTP в Django с Android - PullRequest
0 голосов
/ 19 мая 2010

Я занимаюсь разработкой платформы микроблогов, в которой мне нужно заполнить страницу Post (пользовательский класс с полями), полученный с сервера Django с помощью HttpGet.

На стороне клиента (Android) я использую GSON для анализа ответов от сервера к типу Post. Поэтому я требую, чтобы сервер отправлял Пост один за другим, чтобы добавить каждый из них в список Постов после синтаксического анализа, а затем, наконец, уведомить адаптер списка об изменениях в наборе данных после добавления всех Постов.

Но проблема возникает при начальной загрузке приложения, страница должна быть заполнена 10 последними публикациями с сервера. Поэтому я подумал о довольно грязном способе отправки 10 запросов httpget на сервер один за другим на сервер. Код выглядит так

public void populateTimeline(){
Thread populate = new Thread(){
    public void run(){
        Looper.prepare();
        InputStream data = getData(serviceURL);  //gets a post from server
        if(data!= null){
            String result = responsetoString(data); //turns response to String
            progressDialog.show();
            Posts post = toPostfromGson(result); //Parses string to Post Object             
        }
        Looper.loop();
    }

};
populate.start();       

}

Я думал о том, чтобы выполнить его 10 раз в цикле, чтобы получить 10 постов, которые мне требуются. Но в Django, насколько я знаю (поправьте меня, если я ошибаюсь), нет способа сохранить индекс последнего отправленного сообщения клиенту и, следовательно, нет способа отправить «следующее» сообщение при следующем запросе HttpGet. Так что я вне идей.

Мне кажется, есть лучший способ сделать это эффективно. Любая помощь будет высоко ценится.

1 Ответ

0 голосов
/ 20 мая 2010

В качестве дополнения к комментарию Дмитрия рассмотрите возможность добавления представления в вашем приложении Django, которое возвращает несколько (сериализованных) сообщений.Что-то вроде следующего:

def get_posts(request, count=10):
    posts = Post.objects.all().order_by("-date")[:count]
    posts_in_gson = serialize_to_gson(posts)
    return HttpResponse(posts_in_gson)

Ваш клиентский код должен обрабатывать как список сообщений, так и один пост.(Или просто сделайте последующие звонки с помощью count=1.)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...