2010-05-19 5 views
0

Je développe une plate-forme de microblogging dans laquelle j'ai besoin de remplir la page avec Post (classe définie par l'utilisateur avec des champs) obtenue à partir du serveur Django en utilisant HttpGet.Envoyer plusieurs requêtes http à Django depuis Android

Côté client (Android), j'utilise GSON pour analyser les réponses du serveur au type Post. J'ai donc besoin que le serveur envoie les messages un par un de manière à ajouter chacun d'entre eux à une liste de messages après l'analyse, puis notifier enfin l'adaptateur de liste des changements dans l'ensemble de données après que tous les messages aient été ajoutés.

Mais le problème vient lors du chargement initial de l'application, la page doit être remplie avec les 10 derniers messages du serveur. J'ai donc pensé à une manière plutôt sale d'envoyer 10 requêtes httpget au serveur l'une après l'autre au serveur. Le code ressemble à ceci

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

}

Je pensais à exécuter 10 fois dans une boucle pour obtenir le 10 de Postes que je demande. Mais dans Django autant que je sache (corrigez-moi si je me trompe) il n'y a aucun moyen de conserver un index du dernier message envoyé au client et donc aucun moyen d'envoyer le message 'suivant' sur la prochaine requête HttpGet. Donc je n'ai plus d'idées.

Je pense qu'il y a une meilleure façon de le faire efficacement. Toute aide serait très appréciée.

+2

ne pouvez-vous pas simplement générer une liste de postes de test et sérialiser en gson? –

Répondre

0

En tant qu'élaboration sur le commentaire de Dmitry, pensez à ajouter une vue dans votre application Django qui renvoie plusieurs Posts (sérialisés). Quelque chose comme ce qui suit:

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) 

Votre code client devra gérer une liste des postes ainsi qu'un seul poste. (Ou juste faire des appels ultérieurs avec count=1.)

+0

Je pensais, peut-être que je peux le faire sans un nouveau cours pour désérialiser la liste des messages. Mais cela semble impossible. Donc, j'accepte ceci comme réponse. – primpap

Questions connexes