Android enviando solicitações de postagem para o servidor django csrf falhando
Gostaria que meu aplicativo Android pudesse enviar algumas informações ao meu servidor django. Então eu fiz o aplicativo Android enviar uma solicitação de postagem para a página mysite / upload e a exibição do django para esta página funcionaria com base nos dados da postagem. O problema é a resposta que o servidor fornece para a solicitação de postagem reclama de falha na verificação de csrf. Olhando para o problema, parece que talvez eu precise obter um token csrf do servidor e depois faça a postagem com esse token. Mas não tenho certeza de como faço isso. Edit: Descobri que posso interromper a verificação crsf para esta visualização usando um decorador de exibição @csrf_exempt, mas não tenho certeza se esta é a melhor solução. Meu código do Android:
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(URL);
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("scoreone", scoreone));
nameValuePairs.add(new BasicNameValuePair("scoretwo", scoretwo));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
System.out.println("huzahhhhhhh");
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
BufferedReader in = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuffer sb = new StringBuffer("");
String line = "";
String NL = System.getProperty("line.separator");
while ((line = in.readLine()) != null) {
sb.append(line + NL);
}
in.close();
String result = sb.toString();
System.out.println("Result: "+result);
e meu código de visualizações para lidar com o upload:
# uploads a players match
def upload(request):
if request.method == 'POST':
scoreone = int(request.POST['scoreone'])
scoretwo = int(request.POST['scoretwo'])
m = Match.objects.create()
MatchParticipant.objects.create(player = Player.objects.get(pk=1), match = m, score = scoreone)
MatchParticipant.objects.create(player = Player.objects.get(pk=2), match = m, score = scoretwo)
return HttpResponse("Match uploaded" )
enter code here