2010-01-05 7 views
0

Au début, j'ai une base de données créée en utilisant Ruby sur les rails. Je viens d'implémenter la fonction d'insertion (HTTPPost) dans mon application Android et c'est tout. Mais je ne sais pas comment récupérer enregistrement spécifique de mes bases de données et l'insérer de nouveau vers un enregistrement spécifique dans Android (comme fonction d'édition en RoR)Android: Comment modifier un enregistrement spécifique de base de données dans la programmation Android (Utilisation de Ruby sur rails)

C'est mon code d'insertion:

insertComment private void() { DefaultHttpClient client = new DefaultHttpClient();

HttpPost post = new HttpPost("http://10.10.3.87:3000/comments"); 

    // Configure the form parameters 
    List<NameValuePair> nvps = new ArrayList<NameValuePair>(); 
    nvps.add(new BasicNameValuePair("comment[content]", t_comment.getText().toString())); 
    nvps.add(new BasicNameValuePair("comment[id_account]", "1")); 
    nvps.add(new BasicNameValuePair("comment[id_place]", Integer.toString(position))); 

    try { 
     post.setEntity(new UrlEncodedFormEntity(nvps, HTTP.UTF_8)); 
    } catch (UnsupportedEncodingException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    HttpResponse response = null; 
    try { 
     response = client.execute(post); 
    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

    HttpEntity entity = response.getEntity(); 
    if (entity != null) { 
     try { 
      entity.consumeContent(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
    } 

    Toast.makeText(this, "Your post is successfully uploaded", 
      Toast.LENGTH_SHORT).show(); 

    t_comment.setText(""); 
} 

J'essaie vraiment de nombreuses façons à mais cela ne fonctionne pas et il prend beaucoup de temps pour se battre avec ce morceau de code. En fait, je ne sais vraiment pas comment spécifier RowID en HTTPPost.

Quelqu'un peut-il m'aider s'il vous plaît? Merci à l'avance

Répondre

0

Je ne suis pas sûr du côté Android, mais du point de vue Rails je vous attendre à envoyer une requête HTTP GET à votre application Rails pour votre URL de ressources (par exemple: http://10.10.3.87:3000/comments/1234 pour commentaire avec id 1234), en veillant à définir vos en-têtes d'acceptation pour qu'ils préfèrent une réponse XML (vous devrez définir une vue XML pour que l'action show de votre commentaire fonctionne).

Cela devrait vous donner une réponse XML que vous pouvez décoder et afficher dans votre application Android. Une approche similaire devrait fonctionner pour indexer vos commentaires, par exemple: GET to http://10.10.3.87:3000/comments (avec une vue XML définie) vous donnerait votre index de commentaires afin que vous puissiez en sélectionner un pour obtenir l'id correct pour montrer le commentaire.

Cela peut ne pas suffire si vos commentaires sont attachés à un autre modèle "parent" (par exemple, s'ils portent sur un post), car vous devrez également spécifier le parent qui vous intéresse pour voir le commentaire pour.

J'espère que cela aide!

+0

BTW, avec les dernières versions de Rails, je pense que la définition d'une vue XML pour une action est aussi simple que la création d'un fichier avec l'extension .xml à l'endroit approprié et en le remplissant de contenu XML. Par exemple, si vous avez déjà app/views/comments/show.html.erb vous créeriez app/views/comments/show.xml et le remplir avec du code XML comme "<% = @ comment.content%>". –

0

Merci pour votre réponse. :-D

J'ai lu vos commentaires et j'ai eu une nouvelle idée.

J'ai essayé d'imiter la requête que montrer dans la console RoR.

Dans la demande, nous devons joindre l'identifiant ainsi que des données en utilisant la méthode PUT mais je modifié mon insertcode ci-dessus juste que par requête URL chaged

http://10.10.3.87:3000/comments/update/1

Cette moyenne nous attachons "id" => "1" en utilisant "action" => "mise à jour"

Ce code appellera la méthode POST à ​​la place de mettre la méthode mais c'est absolument le travail !!

MERCI BEAUCOUP POUR VOTRE AIDE^______________^

Questions connexes