6
respostas

Scanner com erro

Scanner scanner = new Scanner((ReadableByteChannel) connection.getOutputStream());

está me pedindo para fazer um cast se não, não funciona, testei os dois e deu erro, o que devo fazer?

6 respostas

Oi Guilherme, tudo bem ?

Acho que você confundiu a ordem.

Imagino que você queira pegar a resposta que chega da sua requisição, não é ?

Nesse caso nós usamos o connection.getInputStream(), já o OutputStream é usado para colocarmos o que será enviado para o servidor.

Espero ter deixado um pouco mais claro.

Abraços

Na explicação do vídeo 02 da aula 05:

...

Scanner scanner = new Scanner(connection.getOutputStream()); String resposta = scanner.next(); return resposta; } catch (MalformedURLException e) { e.prinStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; ...

E quando troquei para input stream, o resultado é só um não sei porque...

Já consegui resolver a questão da resposta do servidor, porém, como o webservice que foi disponibilizado na aula da Caelum está com erro 500 no servidor eu criei meu próprio webservice para testar e printando as variáveis recebidas por post não encontro a chave, recebo direto o valor. Como Faço para enviar uma chave junto com este valor?

Tá muito fraco o curso, não tem pelo menos o código do webservice...

Guilherme,

Fico contente que tenha conseguido resolver o problema.

Como posso te ajudar com essa parte do servidor, pois acabei de fazer um teste para o servidor e aparentemente está funcionando.

Dá uma olhadinha na minha classe de conexão :

package br.com.caelum.fj57design.servidor;

import java.io.IOException;
import java.io.PrintStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.ProtocolException;
import java.net.URL;
import java.util.Scanner;

/**
 * Created by matheus on 10/09/15.
 */
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.setRequestMethod("POST");

            connection.setRequestProperty("Content-type", "application/json");
            connection.setRequestProperty("Accept", "application/json");

            connection.setDoOutput(true);

            PrintStream saida = new PrintStream(connection.getOutputStream());
            saida.println(json);

            connection.connect();
            String resposta = new Scanner(connection.getInputStream()).next();


            return resposta;
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (ProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return null;
    }
}

Opa!!

Estava com o mesmo erro (recebendo 500), e vi que estava enviando a URL sem https, somente http. Caso alguém cometa o mesmo erro, já ajuda... Abraço.