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?
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?
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.