Jump to content

Java - login em pagina web


Recommended Posts

Posted

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

Posted

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

I haven’t lost my mind; it’s backed up on DVD somewhere!

Posted

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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Posted

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

Posted

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.

I haven’t lost my mind; it’s backed up on DVD somewhere!

Posted

e onde envio o tamanho?

edit: é no setContentLength 😄 , 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"

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.