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

Usando o HttpUrlConnection para login

Como poderia adaptar o código de request do curso (no caso, foram enviados os alunos e retornou a média) para fazer um login através de um servidor na web?

6 respostas

Olá Célio

Basicamente basta você mudar a URL para a que o form de login aponta e enviar login/senha como os parametros do POST. Isso deve ser o suficiente.

Olá Paulo,

A minha questão é exactamente essa... Como definiria os parametros para que a minha API no servidor pudesse pegar?

Abaixo o código (É o código do curso mas estou me baseando nele):

URL url = new URL("https://www.meuservidor.com/controller/controller");
            HttpURLConnection connection = (HttpURLConnection) url.openConnection();

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

            connection.setDoOutput(true);

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

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

            return resposta;

A API recebe os dados em JSON e a ligação é https

Obrigado.

solução!

O Json precisa ser enviado em bytes para ser conteudo do post:

em vez de output.printlnjson e a parte do PrintStream, faça:

OutputStream os = connection.getOutputStream();
os.write(json.getBytes("UTF-8"));
InputStream in = new BufferedInputStream(connection.getInputStream());
String resultado = org.apache.commons.io.IOUtils.toString(in, "UTF-8");

// se precisar:
JSONObject jsonObject = new JSONObject(resultado);

Olá Paulo,

Mais uma coisinha...

No meu server side eu tenho algo do género:

<?php

$nome = filter_input(0, "nome");
echo "Olá {$nome}";

Como é que eu envio a variável nome para o servidor?

Olá Paulo,

Resolvido. Mas é normal demorar cerca de 30s para ter o retorno do echo acima descrito?

Estranho demorar tanto assim. Ainda mais se o servidor for o localhost. Descubra qual linha que está demorando tanto, e se é o servidor ou o cliente que está segurando. Pode debugar ou apenas colocar loggers em pontos estratégicos para isso