Rechercher : dans
Par :

[java] probleme quand je fais des methodes

Dernière réponse le 2 mai 2005 à 15:54:27 karine, le 2 mai 2005 à 14:15:01 
 Signaler ce message aux modérateurs

Bonjour,

le code que j'ai fait marche nickel (c'est un proxy).
Mais je me dit que ça serait mieux si je le découpais en méthodes pour que ce soit plus clair.

Je mets donc un bout du code dans une méthode et là ça marche plus (pas de bug à l'execution mais les pages ne s'affichent plus correctement)!!

Est-ce que ça vous est déjà arrivé ? Que dois-je faire ?

Merci

Meilleures réponses pour « [java] probleme quand je fais des methodes » dans :
Java: Les méthodes Voir La notion de fonction et de méthode On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instruction par simple appel de la fonction dans le corps du programme principal. Les fonctions permettent d'exécuter dans plusieurs...
Java - Premier programme Voir Première application avec Java La première chose à faire est de créer un simple fichier texte (sans mise en forme) et de taper les quelques lignes suivantes : // Votre premiere application en Java class FirstApp { public static void main...
Java - Les packages Voir Introduction aux packages La programmation Java consiste à créer des classes. Or, étant donné qu'un programme est généralement développé par une équipe de programmeurs, c'est-à-dire plusieurs personnes, le fait de concaténer (mettre bout à bout)...
Java - L'accessibilité VoirLa notion d'accessibilité Le concept d'accessibilité (généralement appelé encapsulation) définit la possibilité qu'a le concepteur d'une classe de restreindre l'accès à certaines données, ou plus généralement à certains éléments (méthodes, classes,...
POO - Le polymorphisme VoirDéfinition du polymorphisme Le nom de polymorphisme vient du grec et signifie qui peut prendre plusieurs formes. Cette caractéristique est un des concepts essentiels de la programmation orientée objet. Alors que l'héritage concerne les classes (et...
Java - Les types de données VoirLes primitives Java est un langage orienté objet, c'est-à-dire que les éléments manipulés sont des classes, ou plus exactement des objets, c'est-à-dire des instances de classes. Toutefois ces objets contiennent des données possèdant un type (et...

1

Edoc, le 2 mai 2005 à 14:17:48

Salut
tu devrais mettre des bouts de code stp.

peut-etre que tu passes des mauvais parametres, ou que tu ne retournes pas la bonne valeur?

Répondre à Edoc

2

karine, le 2 mai 2005 à 14:26:16

Ok, avant j'avais ça :

class Clients extends Thread {
    private Socket client;
    private Statement stmt;
    private int numero;
    private InputStream sin;
    private OutputStream sout;
    public static int port = 80;
    private static String query;
    
    public Clients(Socket client, Statement stmt, int numero){
        try{
            this.client = client;
	    this.stmt = stmt;
	    this.numero = numero;
            start();
        }
        catch (Exception e){System.err.println(e);}
    } // !constructeur
    
    public void run(){
        try{
sin = client.getInputStream();
BufferedReader from_client = new BufferedReader(new InputStreamReader(sin));
sout = client.getOutputStream();
         	    
	    Socket socket = new Socket();
      	   
	    String tmp;
	    boolean fini = false;
	    int position;
    	    int cle = 0;
    	    String url = "";
            String requete = "";
            String user_agent = "";
            String host_client = "";
            String referer = "";
    
	    
	    /*********************************************/ 
	    /* PARTIE TRAITEMENT DE LA REQUETE DU CLIENT */
	    /*********************************************/
	    
            // Lecture de la requete du client
            while (((tmp = from_client.readLine()) != null) && !fini){
	    	System.out.println(tmp);
		
		String regex0 = "^(GET|POST) +(http[^ ]+) +HTTP/(.\\..)$";
		Pattern p0 = Pattern.compile(regex0);
		Matcher m0 = p0.matcher(tmp);
		while (m0.find()){
			for (int i=0; i <= m0.groupCount(); i++){
				System.out.println("Groupe " + i + " : " + m0.group(i));
			}
				
		
		// On récupère la dernière valeur ID ajoutée dans la base
		int cle_avant = 0;
		
		query = "SELECT MAX(ID) FROM traces_clients";
		ResultSet result = stmt.executeQuery(query);
		while ( result.next() )
 		{
 			cle_avant = result.getInt(1);
		}
		
		cle = cle_avant + 1;
		
		query = "INSERT INTO traces_clients(ID,chaine_entiere,methode,URL,norme_HTTP) VALUES ('" + cle + "', '" + m0.group(0) +  "', '" +  m0.group(1) + "', '" + m0.group(2) + "', '" + m0.group(3) + "')";
		stmt.executeUpdate(query);
		}
		
		
                if (tmp.trim().toUpperCase().startsWith("GET")) {
                    position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length();
                    url = tmp.trim().substring(11,position-2).trim();
		    requete = tmp;
		    
                } else if (tmp.trim().toUpperCase().startsWith("HEAD") || tmp.trim().toUpperCase().startsWith("POST")) {
				position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length();
                    		url = tmp.trim().substring(12,position-2).trim();
				requete = tmp;
			}
		
		// il faut recuperer le User-Agent, le Host et le Referer
		String regex = "^User-Agent: +(.*\\))$";
		Pattern p = Pattern.compile(regex);
		Matcher m = p.matcher(tmp);
		while (m.find()){
			user_agent = m.group(0);
			query = "UPDATE traces_clients SET User_Agent = '" + m.group(1) + "' WHERE ID = " + cle;
			stmt.executeUpdate(query);
		}
		
		String regex2 = "^Host: +(.*)";
		Pattern p2 = Pattern.compile(regex2);
		Matcher m2 = p2.matcher(tmp);
		while (m2.find()){
			host_client = m2.group(1);
		}
		
		String regex3 = "^Referer: +(.*)";
		Pattern p3 = Pattern.compile(regex3);
		Matcher m3 = p3.matcher(tmp);
		while (m3.find()){
			referer = m3.group(1);
		}
		
		// On arrete de lire quand il n'y a plus rien à lire
		String regex4 = "^[a-zA-Z]";
		Pattern p4 = Pattern.compile(regex4);
		Matcher m4 = p4.matcher(tmp);
		if (!m4.find()) {
			fini = true;
			System.out.println("fini " + fini);
			break;
		}
		
            }
       
            System.out.println("Url demandée : " + url + "\n");
	    
	    
	   
	        /***********************************/ 
		/* PARTIE CONNEXION AU SERVEUR WEB */
		/***********************************/
		
	        // Creation de la socket entre le proxy et le serveur Web
	        if (host_client != "") {
			socket = new Socket(InetAddress.getByName(host_client),port);
			System.out.println("socket créé");
		}
		else if (referer != ""){
			socket = new Socket(InetAddress.getByName(referer),port);
			System.out.println("socket créé");
		} else {
			socket = new Socket(InetAddress.getByName(url),port);
			System.out.println("socket créé");
		}
		
		
		PrintStream sortant = new PrintStream(socket.getOutputStream());
		
		// On envoie au serveur Web la requete du client
		if (host_client != "") {
			System.out.println(requete + user_agent + "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			sortant.println(requete + user_agent+ "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			
		} else {
			System.out.println(requete + "\r\n" + user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			sortant.println(requete + user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			
		}
            	
		
		
		/**************************************/
            	// Lecture de la réponse du serveur Web
		/**************************************/
		
		PrintStream sout = new PrintStream(client.getOutputStream());
		System.out.println("sout");
		InputStream entrant = socket.getInputStream();
		System.out.println("entrant");
		System.out.println("Lecture de la réponse du serveur ...");
		
		byte [] buffer = new byte[4096];
            	int lus;
		String ligne = "";
		
			
		// on lit byte par byte la réponse du serveur Web et on l'envoie au client
		while ((lus = entrant.read(buffer)) != -1) {	
			
			sout.write(buffer,0,lus);
			
		}
			
		
		sout.close(); 
		socket.close();
		System.out.println("socket.close();");
client.close();
		
	}
        catch (Exception e){System.err.println(e);}
    } // ! run() method
	    
} // ! Clients class



Après j'ai transformé comme ça :
class Clients extends Thread {
    private Socket client;
    private static Statement stmt;
    private int numero;
    private InputStream sin;
    private OutputStream sout;
    public static int port = 80;
    private static String query;
    private static int cle;
    private static String url = "";
    private static String requete = "";
    private static String user_agent = "";
    private static String host_client = "";
    private static String referer = "";
	    
    public Clients(Socket client, Statement stmt, int numero){
        try{
            this.client = client;
	    this.stmt = stmt;
	    this.numero = numero;
            start();
        }
        catch (Exception e){System.err.println(e);}
    } // !constructeur
    
    public void run(){
        try{
            
           // sout = client.getOutputStream();
         	    
	    Socket socket = new Socket();
      	   
	    String tmp;
	   
	 
	    /*********************************************/ 
	    /* PARTIE TRAITEMENT DE LA REQUETE DU CLIENT */
	    /*********************************************/
	        System.out.println("appel lire_requete_client(client)" + client);
                lire_requete_client(client);
		System.out.println("retour lire_requete_client(client)" + client);
            	
	        
	        /***********************************/ 
		/* PARTIE CONNEXION AU SERVEUR WEB */
		/***********************************/
		System.out.println("connexion serveur web");
	        // Creation de la socket entre le proxy et le serveur Web
	        if (host_client != "") {
			socket = new Socket(InetAddress.getByName(host_client),port);
			System.out.println("socket créé");
		}
		else if (referer != ""){
			socket = new Socket(InetAddress.getByName(referer),port);
			System.out.println("socket créé");
		} else {
			System.out.println("avant");
			socket = new Socket(InetAddress.getByName(url),port);
			System.out.println("socket créé");
		}
		
		
		PrintStream sortant = new PrintStream(socket.getOutputStream());
		
		// On envoie au serveur Web la requete du client
		if (host_client != "") {
			System.out.println(requete + user_agent + "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			sortant.println(requete +"\r\n"+ user_agent+ "\r\n" + "Host: " + host_client + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			
		} else {
			System.out.println(requete + "\r\n" + user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			sortant.println(requete + "\r\n"+user_agent + "\r\n" + "Pragma: no-cache" + "\r\n" + "Cache-control: no-cache" + "\r\n");
			
		}
            	
		
		
		/**************************************/
            	// Lecture de la réponse du serveur Web
		/**************************************/
		
		PrintStream sout = new PrintStream(client.getOutputStream());
		System.out.println("sout");
		InputStream entrant = socket.getInputStream();
		System.out.println("entrant");
		System.out.println("Lecture de la réponse du serveur ...");
		
		byte [] buffer = new byte[4096];
            	int lus;
		String ligne = "";
		
			
		// on lit byte par byte la réponse du serveur Web et on l'envoie au client
		//BufferedReader bin = new BufferedReader(new InputStreamReader(entrant));
		while ((lus = entrant.read(buffer)) != -1) {	
			
			sout.write(buffer,0,lus);
			
		}
			
		
		sout.close(); 
		socket.close();
		System.out.println("socket.close();");
		
client.close();
		System.out.println("client.close");
	}
        catch (Exception e){System.err.println(e);}
    } // ! run() method
    
private static void lire_requete_client(Socket client){
	String tmp;
	boolean fini = false;
	int position;
	
	
	try {
		InputStream sin = client.getInputStream();
        	BufferedReader from_client = new BufferedReader(new InputStreamReader(sin));
	
		while (((tmp = from_client.readLine()) != null) && !fini){
	    		System.out.println(tmp);
		
			String regex0 = "^(GET|POST) +(http[^ ]+) +HTTP/(.\\..)$";
			Pattern p0 = Pattern.compile(regex0);
			Matcher m0 = p0.matcher(tmp);
			while (m0.find()){
				for (int i=0; i <= m0.groupCount(); i++){
					System.out.println("Groupe " + i + " : " + m0.group(i));
				}
				
		
			// On récupère la dernière valeur ID ajoutée dans la base
			int cle_avant = 0;
		
			query = "SELECT MAX(ID) FROM traces_clients";
			ResultSet result = stmt.executeQuery(query);
			while ( result.next() )
 			{
 				cle_avant = result.getInt(1);
			}
		
			cle = cle_avant + 1;
		
			query = "INSERT INTO traces_clients(ID,chaine_entiere,methode,URL,norme_HTTP) VALUES ('" + cle + "', '" + m0.group(0) +  "', '" +  m0.group(1) + "', '" + m0.group(2) + "', '" + m0.group(3) + "')";
			stmt.executeUpdate(query);
			}
		
		
                	if (tmp.trim().toUpperCase().startsWith("GET")) {
                    	position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length();
                    	url = tmp.trim().substring(11,position-2).trim();
		    	requete = tmp;
		    
                	} else if (tmp.trim().toUpperCase().startsWith("HEAD") || tmp.trim().toUpperCase().startsWith("POST")) {
					position = tmp.trim().toUpperCase().lastIndexOf("HTTP") > 0 ? tmp.toUpperCase().lastIndexOf("HTTP") : tmp.length();
                    			url = tmp.trim().substring(12,position-2).trim();
					requete = tmp;
				}
		
			// il faut recuperer le User-Agent, le Host et le Referer
			String regex = "^User-Agent: +(.*\\))$";
			Pattern p = Pattern.compile(regex);
			Matcher m = p.matcher(tmp);
			while (m.find()){
				user_agent = m.group(0);
				query = "UPDATE traces_clients SET User_Agent = '" + m.group(1) + "' WHERE ID = " + cle;
				stmt.executeUpdate(query);
			}
		
			String regex2 = "^Host: +(.*)";
			Pattern p2 = Pattern.compile(regex2);
			Matcher m2 = p2.matcher(tmp);
			while (m2.find()){
				host_client = m2.group(1);
			}
		
			String regex3 = "^Referer: +(.*)";
			Pattern p3 = Pattern.compile(regex3);
			Matcher m3 = p3.matcher(tmp);
			while (m3.find()){
				referer = m3.group(1);
			}
		
			// On arrete de lire quand il n'y a plus rien à lire
			String regex4 = "^[a-zA-Z]";
			Pattern p4 = Pattern.compile(regex4);
			Matcher m4 = p4.matcher(tmp);
			if (!m4.find()) {
				fini = true;
				System.out.println("fini " + fini);
				break;
			}
		
            	}
       	
            	System.out.println("Url demandée : " + url + "\n");
		
		
	} catch (Exception e){System.err.println(e);} 

} // ! lire_requete_client()
	    
} // ! Clients class

Répondre à karine

3

Edoc, le 2 mai 2005 à 14:40:44

Arf... c'est un peu lourd maintenant ...desolé.

surtout quand on connait pas le code, c'est super difficile à déchiffer, et sur une page web en plus.

Il faudrait que tu mettes juste ce qui nous intéresse:

-fonctions appelees
-déclarations
-entete des fonctions
-enf ait juste ce qu'il y a d'important !

Répondre à Edoc

4

Edoc, le 2 mai 2005 à 14:42:49

Il faut que tu sois sure d'avoir bien recopié le code dans tes fonctions et que les variables sont bien déclarées (tout en haut si tu en a besoin dans plusieurs fonctions)

;-)

Répondre à Edoc

5

 karine, le 2 mai 2005 à 15:54:27

Merci Edoc,

J'ai tout repris depuis le début et j'ai fait bien attention pour les paramètres et ce que la fonction renvoie.

Maintenant ça marche.

Merci !

Répondre à karine