Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Login Forum con java

  1. #1

    Login Forum con java

    Ciao a tutti ragazzi...
    Ancora qui a chiedervi una mano.
    Espongo il problema.
    Ho bisogno di prendere dei dati da alcune pagine di un forum con accesso tramite username e password anche in lettura.
    Sono riuscito a fare una funzione per entrare nel forum ma poi mi fermo li.
    viene scaricata solo la pagina che informa di esserti loggato con successo ma poi non so come fare a scorrere tutto il forum...

    Penso che si dovrebbe procedere in questo modo... sottolineo penso...
    Eseguo il login con la funzione che ho creato, mi salvo il cookie generato dal sito e per ogni altra consultazione delle pagine reivio il cookie al sito.
    Non so, però assolutamente come salvare il cookie e reinviarlo..
    Mi aiutate?
    Posto il codice del login... in questo caso lo faccio fare al forum di html.it
    Ah... se non sono stato chiaro non esitate a chiedere spiegazioni... ho bisogno di tanto tanto aiuto... thanks

    codice:
    import java.net.*;
    import java.io.*;
    public class forum {
    
    	private static String risultato="";
    	public static void main(String[] args) {
    		System.out.println(getPaginaAll("http://forum.html.it/forum/member.php"));
    
    	}
    	private static String getPaginaAll(String link){
    		String pagina="";
    		try{
    		String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode("ilblondobari86", "UTF-8");
            data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode("******", "UTF-8");
            data += "&" + URLEncoder.encode("s", "UTF-8") + "=" + URLEncoder.encode("d3fc35b8dcbe13d9ea9e2dc5fec36c71", "UTF-8");
            data += "&" + URLEncoder.encode("action", "UTF-8") + "=" + URLEncoder.encode("login", "UTF-8");
            data += "&" + URLEncoder.encode("url", "UTF-8") + "=" + URLEncoder.encode("/forum/newthread.php?action=newthread&forumid=79", "UTF-8");
            data += "&" + URLEncoder.encode("submit", "UTF-8") + "=" + URLEncoder.encode("Collegati!", "UTF-8");
    		 
            URL url = new URL(link);
    	        URLConnection conn = url.openConnection();
    	        conn.setDoOutput(true);
    	        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    	        wr.write(data);
    	        wr.flush();
    	    
    	        // Get the response
    	        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	        
    	        String line;
    	        while ((line = rd.readLine()) != null) {
    	        	pagina+=line;
    	        }
    
    	        wr.close();
    	        rd.close();
    		}catch (IOException e){
    			
    		}
       //Memorizzo tutta la pagina in una Stringa
             return pagina;
    	}
    	
    		
    		
    	}
    Ho ovviamente asteriscato la password

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Login Forum con java

    Originariamente inviato da ilblondobari86
    mi salvo il cookie generato dal sito e per ogni altra consultazione delle pagine reivio il cookie al sito.
    Esatto.

    Originariamente inviato da ilblondobari86
    Non so, però assolutamente come salvare il cookie e reinviarlo..
    La gestione dei cookie non è facilissima ma si può fare.
    Ti suggerisco di leggere: Cookie Management
    E guarda anche java.net.CookieManager che è disponibile da Java 6.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Innanzitutto grazie.
    Sto dando un'occhiata ma non sto capendo molto...

    con
    codice:
    CookieManager cookie= new CookieManager();
    cookie.getCookieStore();
    Dovrei prendere il cookie appena salvato... giusto?
    Poi come lo rimando?
    Non hai degli esempi?

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Altri link utili:

    http://java.sun.com/developer/JDCTec.../tt0913.html#1
    http://blogs.sun.com/CoreJavaTechTip...ing_in_java_se

    E se vuoi puoi anche usare una libreria esterna come la Apache HttpClient che è di certo più sofisticata e robusta.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  5. #5
    Ho risolto così.
    Cioè così funziona ma non so se è effettivamente il metodo migliore

    codice:
    import java.net.*;
    import java.io.*;
    public class forum {
    
    	
    	public static void main(String[] args) {
    		
    		System.out.println(getPaginaAll("http://www.forum.mondowarez.com/ucp.php?mode=login"));
    
    	}
    	private static String getPaginaAll(String link){
    		String pagina="";
    		try{
    		String data = URLEncoder.encode("username", "UTF-8") + "=" + URLEncoder.encode("*****", "UTF-8");
            data += "&" + URLEncoder.encode("password", "UTF-8") + "=" + URLEncoder.encode("******", "UTF-8");
            data += "&" + URLEncoder.encode("login", "UTF-8") + "=" + URLEncoder.encode("Login", "UTF-8");
          
            
    		 
            URL url = new URL(link);
            	CookieManager cm = new CookieManager();
    
    	        URLConnection conn = url.openConnection();
    	        conn.setDoOutput(true);
    	        OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
    	        wr.write(data);
    	        wr.flush();
    	        
    	        
    	        // Get the response
    	        BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
    	       
    	        
    	        String headerName=null;
    	        String cookie="";
    	        for (int i=1; (headerName = conn.getHeaderFieldKey(i))!=null; i++) {
    	         	if (headerName.equals("Set-Cookie")) {                  
    	        	 cookie = conn.getHeaderField(i);      
    	         	}
    	        }
    	        	System.out.println(cookie);
    	        	
    	        wr.close();
    	        rd.close();
    	        
    	        URL myUrl = new URL("http://www.forum.mondowarez.com/lista.php?f=98");
    	        URLConnection urlConn = myUrl.openConnection();
    	        String myCookies =cookie;
    	        urlConn.setRequestProperty("Cookie", myCookies);
    	        urlConn.connect();
    	        BufferedReader bufrd = new BufferedReader(new InputStreamReader(urlConn.getInputStream()));
    	        String line;
    	        while ((line = bufrd.readLine()) != null) {
    	        	pagina+=line;
    	        //	System.out.println(line);
    	        }
    		}catch (IOException e){
    			
    		}
       //Memorizzo tutta la pagina in una Stringa
             return pagina;
    	}
    	
    		
    		
    	}
    Questa classe prende la pagina con la lista di tutti i film presenti nel sito mondowarez.
    Bisogna solo sostituire ad username e password i propri...
    Spero di non aver infranto nessun tipo di regolamento...
    Nel caso admin censurate pure...
    Ripeto... così funziona... ma non so se è il modo migliore... suggerimenti per migliorarlo?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.