[java] compilare form di un sito tramite programmino

di il
5 risposte

[java] compilare form di un sito tramite programmino

Salve a tutti,

vorrei creare un programma che mi permetta di collegarmi ad un sito esaminarne la pagina, poter compilare i campi di un form e vedere un eventuale risposta(ad esempio effettuare tutti i passaggi della registrazione ad un forum e vederne l'esito da prog)

come primo passo ho provato a realizzare un programmino che si logga sulla pagina di xxxx

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.net.MalformedURLException;
import sun.misc.BASE64Encoder;


public class http {
	@SuppressWarnings("restriction")
	public static void main(String[] args)  throws Exception {
		String site="https://xxxtxxxxx.xxx/ServiceLogi";
		String username="MYnomeutente";
		String password="MYpassword";
		URLConnection uc;
String query=username+":"+password;

		URL u = new URL(site);
		try{
			uc = u.openConnection();
			BufferedReader in = new BufferedReader(
					new InputStreamReader(
					uc.getInputStream()));
			String inputLine;
			while ((in.readLine() != null ))
		    {inputLine = in.readLine();
			System.out.println(inputLine);

			uc.setRequestProperty("User-agent","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100917 Firefox/3.6.10 (Swiftfox)" );
			uc.setRequestProperty("Authorization", "Basic " + new sun.misc.BASE64Encoder().encode((query.getBytes())));
		    
			System.out.println("ok");
			
			

			

			while ((in.readLine() != null ))
			    {inputLine = in.readLine();
				System.out.println(inputLine);

			in.close();
		 }}}
		catch (Exception e)
		{
		    System.out.println(e);
		}finally{
			 
		  }}}
con questo ho l'output:
<html lang="it">
java.lang.IllegalStateException: Already connected


quindi dovrebbe essersi connesso... come faccio a vedere l'output di risposta? ad es il mio nome in alto a destra che compare una volta loggato da programma? e come posso compilare il campo della ricerca?

5 Risposte

  • Re: [java] compilare form di un sito tramite programmino

    Ciao,

    di fatto vuoi fare un mini browser che richiede un form, lo compila, lo invia e analizza cosa risponde il sito: molto difficile.

    Tieni presente che i siti moderni usano javascript, HTML dinamico e AJAX e quindi non inviano mai al browser un semplice e puro HTML statico. Inoltre l'interattività (tipo la compilazione e l'invio di un form) è spesso compito di librerie Javascript (che dovresti eseguire per capire cosa ti ha inviato il sito).

    Gualtiero
  • Re: [java] compilare form di un sito tramite programmino

    Grazie per la risposta, io avrei bisogno di una cosa meno generica cioè l'applicazione dovrebbe essere studiata per funzionare solo su un unico sito dovrebbe semplificarsi di molto la cosa...o no? come posso capire il modo in cui il sito che m'interessa comunica i dati per il login e il form???
  • Re: [java] compilare form di un sito tramite programmino

    import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.net.URL;
    import java.net.URLConnection;
    //import java.net.MalformedURLException;
    //import sun.misc.BASE64Encoder;
    
    
    public class COnn2 {
    	public static void main(String[] args)  throws Exception {
    		String site="https://xxxxxx.xxx/ServiceLogin";
    		String username="MYnomeutente";
    		String password="MYpassword";
    		URLConnection uc;
    		String query=username+":"+password;
    
    		URL u = new URL(site);
    		try{
    			uc = u.openConnection();
    			uc.setRequestProperty("User-agent","Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.10) Gecko/20100917 Firefox/3.6.10 (Swiftfox)" );
    			uc.setRequestProperty("Authorization", "Basic " + new sun.misc.BASE64Encoder().encode((query.getBytes())));
    
    			BufferedReader in = new BufferedReader(
    					new InputStreamReader(
    							uc.getInputStream()));
    			String inputLine;
    			while ( (inputLine = in.readLine()) != null )
    			{
    				
    				System.out.println(inputLine);
    				
    			}
    			in.close();
    		}
    		catch (Exception e)
    		{
    			System.out.println(e);
    		}finally{
    
    		}
    	}
    }
  • Re: [java] compilare form di un sito tramite programmino

    Spero che il codice che ti ho postato sopra funzioni
  • Re: [java] compilare form di un sito tramite programmino

    Ciao ho asteriscato il nome del sito su cui fai le prove, giusto per evitare eventuali rogne. Non si sa mai...

    Saluti
Devi accedere o registrarti per scrivere nel forum
5 risposte