• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Neo4

Java - login em pagina web

7 mensagens neste tópico

Boas noites,

eu estou a tentar através de uma aplicação java conseguir fazer login em foruns na internet (este por exemplo) mas não sei porque não está a funcionar.

codigo:

public class login {
    
    public void login(){}
    
    public void connect (String webp, String user, String pass) throws Exception{

    URL url = new URL(webp);
    String POST_CONTENT_TYPE = "application/x-www-form-urlencoded";

// Open a HTTP connection to the URL

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

// Allow Inputs
conn.setDoInput(true);

// Allow Outputs
conn.setDoOutput(true);

// Don't use a cached copy.
conn.setUseCaches(false);

// Use a post method.
conn.setRequestMethod("POST");

conn.setRequestProperty("Connection", "Keep-Alive");
conn.setRequestProperty("Authorization", "Basic" );
conn.setRequestProperty("Content-Type", POST_CONTENT_TYPE);
conn.setRequestProperty("Content-Type", "text/html; charset=iso-8859-1");
conn.setFollowRedirects(true);
conn.setInstanceFollowRedirects(true);




DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

StringBuffer content = new StringBuffer(1024);
content.append("vb_login_username=" + URLEncoder.encode(user, "UTF-8"));
content.append("vb_login_password=" +URLEncoder.encode(pass, "UTF-8"));

dos.writeBytes(content.toString());
System.out.println(conn.getPermission());

BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String responeLine;

// Good Practice: Use StringBuilder in this case
StringBuilder response = new StringBuilder();

// Read untill there is nothing left in the stream
// throws IOException
while ((responeLine = bufferedReader.readLine()) != null)
{
response.append(responeLine + "\n");
}

System.out.println (response.toString());

dos.flush();
dos.close();
    }

}

uma ajudinha por favor!

abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Assim derrepente falta um & em

content.append("vb_login_username=" + URLEncoder.encode(user, "UTF-8"));

content.append("&vb_login_password=" +URLEncoder.encode(pass, "UTF-8"));

Acho que é isso já não faço nada deste género à bastante tempo :S

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ja alterei mas continua sem dar  :D

neste caso o vb_login_username e password sao os nomes para os foruns vbulletim apenas

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Sabes o que é isto ?? conn.setRequestProperty("Authorization", "Basic" ); se calhar era boa ideia dares uma vista de olhos pelo básico do protocolo http é que fazer o que queres sem conhecer o protocolo é impossível :S

Tira também isto conn.setRequestProperty("Content-Type", "text/html; charset=iso-8859-1"); já que na linha antes estás a definir o tipo.

E falta definires o Content-Lenght com o tamanho da String do post.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

mas o tamanho da string pode variar nao? depende do user e da pass...

quanto ao conn.setRequestProperty("Authorization", "Basic" ); não sei o que é, vi varios exemplos e copiei alguns comandos, sabes o que faz isso?

obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Isso serve para aquele login HTTP que aparece a janelinha a pedir pass e user e se não me engano isso nem é usado assim.

Sim o tamanho varia com o user e pass e para que o servidor leia o pedido POST tens de mandar o tamanho.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e onde envio o tamanho?

edit: é no setContentLength :D , quer dizer voltei a ver e o tamanho disto é o tamanho da resposta =S

e só com as modificações que fiz não dá.

o for de login tem isto:

<form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
                <script type="text/javascript" src="clientscript/vbulletin_md5.js?v=382"></script>
                <table cellpadding="0" cellspacing="3" border="0">
                <tr>
                        <td class="smallfont" style="white-space: nowrap;"><label for="navbar_username">Nick</label></td>
                        <td><input type="text" class="bginput" style="font-size: 11px" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="Nick" onfocus="if (this.value == 'Nick') this.value = '';" /></td>
                        <td class="smallfont" nowrap="nowrap"><label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Lembrar-me?</label></td>
                </tr>
                <tr>
                        <td class="smallfont"><label for="navbar_password">Password</label></td>
                        <td><input type="password" class="bginput" style="font-size: 11px" name="vb_login_password" id="navbar_password" size="10" tabindex="102" /></td>
                        <td><input type="submit" class="button" value="Entrar" tabindex="104" title="Digite o seu username e password ou clique no botão 'registar' para criar o seu próprio perfil." accesskey="s" /></td>
                </tr>
                </table>
                <input type="hidden" name="s" value="f49c08fece95fe650a3c959dd98bb0a5" />
                <input type="hidden" name="securitytoken" value="guest" />
                <input type="hidden" name="do" value="login" />
                <input type="hidden" name="vb_login_md5password" />
                <input type="hidden" name="vb_login_md5password_utf" />
                </form>

não é preciso definir em lado nenhum a acção? "login.php?do=login"

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora