从Android向Django发送多个http请求

时间:2010-05-19 18:55:58

标签: android django http

我正在开发一个微博客平台,我需要在其中使用HttpGet填充从Django服务器获得的Post(用户定义的带字段的类)页面。

在客户端(Android)中,我使用GSON将服务器的响应解析为Post类型。所以我要求服务器一个接一个地发送Post,以便在解析之后将它们中的每一个添加到Posts列表中,然后在添加所有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中我知道(如果我错了,请纠正我)没有办法将最后发送的Post的索引保存到客户端,因此无法在下一个HttpGet请求中发送'next'Post。所以我没有想法。

我觉得有效地做到这一点有更好的方法。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

作为对Dmitry评论的详细说明,请考虑在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进行后续调用。)