Solucionado (ver solução)
Solucionado
(ver solução)
3
respostas

Problema OuvirMensagens()

Minha aplicação está dando erro apos um determinado tempo do envio da mensagem. Ele tenta ouvir novamente se existe mensagem, e retorna null, dando um erro JSONException

E/AndroidRuntime: FATAL EXCEPTION: Thread-10
                  Process: caelum.com.br.ichat_alura, PID: 24045
                  java.lang.RuntimeException: org.json.JSONException: Value null at id of type org.json.JSONObject$1 cannot be converted to int
                      at br.com.caelum.ichat.service.ChatService$2.run(ChatService.java:105)
                      at java.lang.Thread.run(Thread.java:761)
                   Caused by: org.json.JSONException: Value null at id of type org.json.JSONObject$1 cannot be converted to int
                      at org.json.JSON.typeMismatch(JSON.java:100)
                      at org.json.JSONObject.getInt(JSONObject.java:481)
                      at br.com.caelum.ichat.service.ChatService$2.run(ChatService.java:94)
                      at java.lang.Thread.run(Thread.java:761)

O erro ocorre neste linha :

final Mensagem mensagem = new Mensagem(jsonObject.getInt("id"), jsonObject.getString("text"));

Pensei que podia ser algum erro meu, então peguei o código disponível na próxima aula ( que não esta correto, esta incompleto)

Poderia me ajudar?

3 respostas

Oi Felipe, tudo bem ?

Cara não sei bem o problema que está acontecendo, acredito ser algum problema com o servidor. Porque você não deve estar recebendo nada.

Nesse instante imagino que você alterar o tipo primitivo int para o wrapper Integer já deve fazer parar de tomar Exception.

Vou dar uma olhadinha no curso e te dou um feedback mais tarde, ok ?

Abraços

solução!

Eu tive esse problema também.

Troque

getInt("id")

por

optInt("id")

Nessa situação onde não há envio de ID, o optInt vai retornar 0. Nessa mesma transação, o campo "text" virá com null.

Nos casos de você receber valores nulos, você pode optar por não criar uma nova mensagem e evitar que seja colocado um valor null na listagem.

Mas o servidor já não deveria devolver o valor correto? Seja ele 0 (quando null) ou o id do client quando existir? Algum instrutor da Alura poderia checar o server disponibilizado ou informar como podemos corrigir isso?

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software