[java] probleme quand je fais des methodes
karine
-
2 mai 2005 à 14:15
karine -
karine -
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
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
A voir également:
- [java] probleme quand je fais des methodes
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Java apk - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
5 réponses
Utilisateur anonyme
2 mai 2005 à 14:17
2 mai 2005 à 14:17
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?
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?
ok, avant j'avais ça :
Après j'ai transformé comme ç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
Utilisateur anonyme
2 mai 2005 à 14:40
2 mai 2005 à 14:40
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 !
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 !
Utilisateur anonyme
2 mai 2005 à 14:42
2 mai 2005 à 14:42
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)
;-)
;-)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question