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

Erro no Metado ouvirMensagens.

Olá estou com problema na classe ChatService:

Aqui o erro do meu console:

10-18 17:53:34.150 21472-21496/com.example.guilherme.ichat_alura E/AndroidRuntime: FATAL EXCEPTION: Thread-4
                                                                                   Process: com.example.guilherme.ichat_alura, PID: 21472
                                                                                   java.lang.RuntimeException: java.net.ConnectException: Connection refused
                                                                                       at com.example.guilherme.ichat.service.ChatService$1.run(ChatService.java:98)
                                                                                       at java.lang.Thread.run(Thread.java:761)
                                                                                    Caused by: java.net.ConnectException: Connection refused
                                                                                       at java.net.PlainSocketImpl.socketConnect(Native Method)
                                                                                       at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:334)
                                                                                       at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:196)
                                                                                       at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:178)
                                                                                       at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:356)
                                                                                       at java.net.Socket.connect(Socket.java:605)
                                                                                       at com.android.okhttp.internal.Platform.connectSocket(Platform.java:113)
                                                                                       at com.android.okhttp.Connection.connectSocket(Connection.java:196)
                                                                                       at com.android.okhttp.Connection.connect(Connection.java:172)
                                                                                       at com.android.okhttp.Connection.connectAndSetOwner(Connection.java:367)
                                                                                       at com.android.okhttp.OkHttpClient$1.connectAndSetOwner(OkHttpClient.java:130)
                                                                                       at com.android.okhttp.internal.http.HttpEngine.connect(HttpEngine.java:329)
                                                                                       at com.android.okhttp.internal.http.HttpEngine.sendRequest(HttpEngine.java:246)
                                                                                       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:457)
                                                                                       at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:126)
                                                                                       at com.example.guilherme.ichat.service.ChatService$1.run(ChatService.java:75)
                                                                                       at java.lang.Thread.run(Thread.java:761)
8 respostas

Aqui o meu codigo da classe ChatService:

 public void ouvirMensagens() {

                new Thread(new Runnable(){

                    @Override
                    public void run(){

                        try {
                            // Altere para o seu IP
                            URL url = new URL("http://192.168.0.208:8080/polling");

                            HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

                            httpConnection.setRequestMethod("GET");
                            httpConnection.setRequestProperty("Accept", "application/json");

                            httpConnection.connect();

                            Scanner scanner = new Scanner(httpConnection.getInputStream());
                            StringBuilder builder = new StringBuilder();

                            while (scanner.hasNextLine()) {
                                builder.append(scanner.nextLine());
                            }

                            String json = builder.toString();

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

                            activity.runOnUiThread(new Runnable(){
solução!

Fala ai Guilherme, tranquilo ?

Cara acho que o endereço que você tá passando está errado, pois o erro é que não conseguiu estabelecer uma conexão checa isso ai e fala para gente :D

Bom dia,

Consegui resolver, mas agora eu tenho um outro problema, quando eu mando mensagem da um erro e para funcionar o aplicativo.

Aqui o erro que aparece no console:

10-19 15:45:21.992 29944-29966/com.example.guilherme.ichat_alura E/AndroidRuntime: FATAL EXCEPTION: Thread-4
                                                                                   Process: com.example.guilherme.ichat_alura, PID: 29944
                                                                                   java.lang.RuntimeException: org.json.JSONException: Value null at id of type org.json.JSONObject$1 cannot be converted to int
                                                                                       at com.example.guilherme.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 com.example.guilherme.ichat.service.ChatService$2.run(ChatService.java:92)
                                                                                       at java.lang.Thread.run(Thread.java:761)

Eu baixei arquivo da aula eu cobiei os codigo e agora o erro e outro en vez de "cannot be converted to int" agora e "No value for texto"

O erro do que aparece no console

10-19 16:09:37.110 10461-10485/com.example.guilherme.ichat_alura E/AndroidRuntime: FATAL EXCEPTION: Thread-4
                                                                                   Process: com.example.guilherme.ichat_alura, PID: 10461
                                                                                   java.lang.RuntimeException: org.json.JSONException: No value for texto
                                                                                       at com.example.guilherme.ichat.service.ChatService$2.run(ChatService.java:105)
                                                                                       at java.lang.Thread.run(Thread.java:761)
                                                                                    Caused by: org.json.JSONException: No value for texto
                                                                                       at org.json.JSONObject.get(JSONObject.java:389)
                                                                                       at org.json.JSONObject.getString(JSONObject.java:550)
                                                                                       at com.example.guilherme.ichat.service.ChatService$2.run(ChatService.java:92)
                                                                                       at java.lang.Thread.run(Thread.java:761)

Porque o texto da sem valor se no codigo esta tudo certo?

aqui o metado que console esta monstrado o erro:

public void ouvirMensagens(){

        new Thread(new Runnable() {

            @Override
            public void run() {
                try {
                    // Altere para o seu IP
                    URL url = new URL("http://192.168.1.4:8080/polling");

                    HttpURLConnection httpConnection = (HttpURLConnection) url.openConnection();

                    httpConnection.setRequestMethod("GET");

                    httpConnection.setRequestProperty("Accept", "application/json");

                    httpConnection.connect();

                    Scanner scanner = new Scanner(httpConnection.getInputStream());
                    StringBuilder builder = new StringBuilder();

                    while(scanner.hasNextLine()){
                        builder.append(scanner.nextLine());
                    }

                    String json = builder.toString();

                    JSONObject jsonObject = new JSONObject(json);
                    final Mensagem mensagem = new Mensagem(jsonObject.getInt("id"),jsonObject.getString("texto"));

                    // Colocando a mensagem na lista, mas esse método não existe ainda, certo?
                    activity.runOnUiThread(new Runnable() {

                        @Override
                        public void run() {
                            activity.colocaNaLista(mensagem);
                        }

                    });

                } catch (Exception e) {
                    throw new RuntimeException(e);
                }
            }

        }).start();
    }

O erro esta na linha:

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

Eu ja verifiquei se o nome texto esta correto.

Oi Guilherme,

Pode mostrar como você está enviando as mensagens?

Abraços!

Eu ja resouvi este problema usando o as tecnicas java que você mostrou nas aulas

Ótimo Guilherme! Bons estudos!