O servidor está retornando sempre média 0, independente do valor das notas enviadas
O servidor está retornando sempre média 0, independente do valor das notas enviadas
Oi Laura, obrigado por reportar. Na segunda feira vamos verificar.
Olá Laura,
Verificamos o servidor aqui e parece estar tudo ok, você poderia postar aqui o código das classes ListaAlunosActivity
, AlunosConverter
e WebClient
, por favor? Vamos tentar descobrir o que pode estar causando o cálculo incorreto.
Vamos lá!
AlunoConverter
public class AlunoConverter {
public String converterParaJson(List<Aluno> alunos){
JSONStringer js = new JSONStringer();
try {
js.object().key("list").array().object().key("aluno").array();
for(Aluno aluno : alunos){
js.object();
js.key("Nome").value(aluno.getNome());
js.key("Nota").value(aluno.getNota());
js.endObject();
}
js.endArray().endObject().endArray().endObject();
} catch (JSONException e) {
e.printStackTrace();
}
return js.toString();
}
}
WebClient:
public class Webclient {
public String post(String json){
try {
URL url = new URL("https://www.caelum.com.br/mobile");
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setRequestProperty("Content-type", "application/json");
connection.setRequestProperty("Accept", "application/json");
connection.setDoOutput(true);
connection.setDoInput(true);
OutputStream out = connection.getOutputStream();
PrintStream outPut = new PrintStream(out);
outPut.println(json);
connection.connect();
InputStream inp = connection.getInputStream();
Scanner scanner = new Scanner(inp);
String resposta = scanner.next();
return resposta;
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
}
ListaAlunosActivity
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch(item.getItemId()){
case R.id.menu_enviar_notas:
new EnviaAlunosTask(this).execute();
break;
}
return super.onOptionsItemSelected(item);
}
EnviaAlunosTask
@Override
protected String doInBackground(Void... objects) {
AlunoDAO dao = new AlunoDAO(contexto);
List<Aluno> alunos = dao.buscaAlunos();
dao.close();
AlunoConverter conversor = new AlunoConverter();
String json = conversor.converterParaJson(alunos);
Webclient client = new Webclient();
String resposta = client.post(json);
return resposta;
}
Ok, vamos tentar fazer uma pequena alteração na classe AlunoConverter
. Notei que as chaves que estão sendo enviadas no JSON estão com a primeira letra em maiúscula. Vamos tentar alterar para:
js.key("nome").value(aluno.getNome());
js.key("nota").value(aluno.getNota());
Além disso, tenho uma outra pergunta. Quando você recebe a resposta do servidor ele chega a enviar um json escrito: {media: 0, quantidade: 0}
?
Boa tarde Jeferson! Eu estava recebendo a resposta do servidor assim:
{"media": "0", "quantidade": 11}
Agora troquei a primeira letra das chaves para minúsculas e resolveu, obrigada!