Neo4 Posted April 18, 2009 at 08:50 PM Report #257563 Posted April 18, 2009 at 08:50 PM 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
magician Posted April 18, 2009 at 09:16 PM Report #257571 Posted April 18, 2009 at 09:16 PM 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!
Neo4 Posted April 18, 2009 at 09:31 PM Author Report #257573 Posted April 18, 2009 at 09:31 PM ja alterei mas continua sem dar 😄 neste caso o vb_login_username e password sao os nomes para os foruns vbulletim apenas
magician Posted April 18, 2009 at 09:54 PM Report #257578 Posted April 18, 2009 at 09:54 PM 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!
Neo4 Posted April 19, 2009 at 01:19 PM Author Report #257610 Posted April 19, 2009 at 01:19 PM 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
magician Posted April 19, 2009 at 02:12 PM Report #257617 Posted April 19, 2009 at 02:12 PM 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!
Neo4 Posted April 19, 2009 at 04:54 PM Author Report #257656 Posted April 19, 2009 at 04:54 PM 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"
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now