2010-11-28 37 views
2

J'essaie d'envoyer des données depuis android vers l'application Django. Je veux stocker les données dans une table dans la base de données sqlite appelée "mytable". Voici le code android:403 message FORBIDDEN lorsque j'utilise HttpPost pour envoyer des données à Django

try { 
     ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
     HttpClient httpclient = new DefaultHttpClient(); 
     HttpPost httppost = new HttpPost("http://localhost:8000/androidweb/edit/"); 
     JSONObject j = new JSONObject(); 
     try { 
      j.put("name", "david"); 
     } catch (JSONException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     nameValuePairs.add(new BasicNameValuePair("year", j.toString())); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 
    // myTextView.setText(j.toString()); 
     HttpResponse response = httpclient.execute(httppost); 
     myTextView.setText(response.getStatusLine().toString()); 
    // myTextView.setText(response.toString()); 
    }catch(Exception e) { 
     myTextView.setText("Error in http connection "+e.toString()); 
} 

Le problème est résolu maintenant. Je devais seulement avoir une valeur de retour

+0

Aucun de votre code ne devrait générer un 403. A quoi ressemble le journal Django? –

+0

Hey! Comment vérifiez-vous le journal Django? L'erreur peut-elle être due au fait que je ne renvoie rien de views.py? – user522559

+0

Si vous utilisez le serveur de développement, regardez l'écran. Ne rien retourner ferait 500. –

Répondre

2

Cela ressemble à l'infrastructure Cross-Site Request Forgery de Django, qui empêche par défaut les requêtes POST tierces. Lisez le CSRF docs de Django pour plus de détails.

+0

Hey! Je pense que tu as raison. J'ai rétrogradé à Django 1.1.1 pour ne pas avoir à gérer les mesures de sécurité de csrf. Cependant, maintenant je reçois 500 - erreur interne du serveur. Des idées pour lesquelles cela se passe? – user522559

+0

500 erreurs sont généralement dues à des erreurs dans votre code. Si vous ne les voyiez pas sous Django 1.2 alors je suppose que vous pourriez avoir quelque chose dans votre code qui ne fonctionne qu'avec Django 1.2 - peut-être que vous importez un module ou appelez une méthode qui n'existait pas dans 1.1? Vos journaux d'erreurs HTTP devraient vous donner quelques indices. –

+0

oui vous avez raison. doit être quelque chose de mal dans mon code. je vais me débrouiller – user522559