IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Entrée/Sortie Java Discussion :

persistance cookies, plusieurs requettes http


Sujet :

Entrée/Sortie Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut persistance cookies, plusieurs requettes http
    Bonjour,
    je fais quelques test en ce moment :
    je fais deux requetes get http :

    URL url = new URL("http://www.monsite.com/");
    URLConnection cnx = url.openConnection();

    cette page quand on accédé via navigateur, doit créer un cookie.

    URL url = new URL("http://www.monsite.com/page2/");
    URLConnection cnx = url.openConnection();

    cette page2 se sert du cookie créé lors de la première page pour executer un code php.

    ça marche très bien lorsque j'accède via un navigateur.
    mais lorsque je le fait via mes deux requêtes java, le cookie ne semble pas exister.

    Que faire??

    En espérant avoir bien énoncer mon problème, j'attends des conseil avec impatience.

    merci d'avance

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ce n'est pas la page qui crée un cookie, c'est le navigateur. Donc, pas de navigateur, plus de cookies.

    Je pense qu'il faut que tu revoyes ta conception...

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Pourtant lorsque je fait ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    try {
    	        // Create a URLConnection object for a URL
    	        URL url = new URL("http://www.monsite.com");
    	        URLConnection conn = url.openConnection();
     
    	        // Get all cookies from the server.
    	        // Note: The first call to getHeaderFieldKey() will implicit send
    	        // the HTTP request to the server.
    	        for (int i=0; ; i++) {
    	            String headerName = conn.getHeaderFieldKey(i);
    	            String headerValue = conn.getHeaderField(i);
     
    	            if (headerName == null && headerValue == null) {
    	                // No more headers
    	                break;
    	            }
    	            if ("Set-Cookie".equalsIgnoreCase(headerName)) {
    	                // Parse cookie
    	                String[] fields = headerValue.split(";\\s*");
     
    	                String cookieValue = fields[0];
    	                String expires = null;
    	                String path = null;
    	                String domain = null;
    	                boolean secure = false;
     
    	                // Parse each field
    	                for (int j=1; j<fields.length; j++) {
    	                    if ("secure".equalsIgnoreCase(fields[j])) {
    	                        secure = true;
    	                    } else if (fields[j].indexOf('=') > 0) {
    	                        String[] f = fields[j].split("=");
    	                        if ("expires".equalsIgnoreCase(f[0])) {
    	                            expires = f[1];
    	                        } else if ("domain".equalsIgnoreCase(f[0])) {
    	                            domain = f[1];
    	                        } else if ("path".equalsIgnoreCase(f[0])) {
    	                            path = f[1];
    	                        }
    	                    }
    	                }
     
     
    	            }
    	        }
    	    } catch (MalformedURLException e) {
    	    } catch (IOException e) {
    	    }
    Je trouve bien un cookie...

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Oui, je me suis mal exprimé c'est le serveur qui créé le cookie, pas le navigateur , mais ce dernier le gère, de façon à pouvoir le réutiliser ensuite (le renvoyer vers le serveur, par ex.).

    Donc, j'essaie de reprendre : pas de navigateur, pas de gestion des cookies, et c'est à toi de la faire.

    J'ai bon ?

  5. #5
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 776
    Par défaut
    T'as faux

    En fait depuis java 1.5, les cookies peuvent être gérés sans fouiner dans l'entête HTTP via la classe abstraite CookieHandler
    Et depuis java 1.6, il y a même une implémentation toute faite de cette classe: CookieManager

  6. #6
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ah c'est exactement ce que je voulais dire il faut utiliser les classes standard du JDK soi même, elles ne s'utilisent pas automatiquement.

    Bon je vais me coucher ça vaudra mieux

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Merci pour vos réponse !

    A tout hasard Uther t'aurais un exemple d'utilisation de CookieManager qui s'appliquerai à mon problème?

  8. #8
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 776
    Par défaut
    Je penses que pour ton problème, faire
    CookieHandler.setDefault(new CookieManager());
    avant la première connexion devrait suffire.

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Malheureusement ta solution ne marche pas ça aurait été idéal sinon...

  10. #10
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Bonjour,

    Que signifie "ça ne marche pas"? Si tu désires être aidé, il faut être plus précis.

    Et peut-on voir ton code?

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Arf désolé pour le manque de précision

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    public class Testrequest {
     
     
    	public static void main(String[] args) {
    		System.out.println("Start");
    		try{
    			CookieHandler.setDefault(new CookieManager()); 
    			URL url = new URL("http://www.monsite.com");
    			URLConnection cnx = url.openConnection();
     
    			BufferedReader in = new BufferedReader(new InputStreamReader(cnx.getInputStream()));
    	        String ligne;
     
    	        while ((ligne = in.readLine()) != null) {
    		    System.out.println(ligne1);
    			}
     
    			URL url1 = new URL("http://www.monsite.com/page2.php");
    			URLConnection cnx1 = url1.openConnection();
     
    			BufferedReader in1 = new BufferedReader(new InputStreamReader(cnx1.getInputStream()));
    	        String ligne1;
    			//affiche true si le cookies est activé
    	        while ((ligne1 = in1.readLine()) != null) {
    		    System.out.println(ligne1);
    			}
    		}
     
    		catch(Exception e){
    			System.out.println(e);
    		}
     
    }
    Ce code devrait afficher true si le cookie est activé mais ne le fait pas

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Je commence sérieusement a désespérer après presque semaine de recherche je ne trouve toujours rien mon dernier essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CookieManager cm = new CookieManager();
    			CookieHandler.setDefault(cm); 
    			URL url = new URL("http://www.monsite.com/");
    			URLConnection cnx = url.openConnection();
     
    			CookieStore cs = cm.getCookieStore();
    			List<HttpCookie> list = cs.getCookies();
     
    			Iterator<HttpCookie> iter = list.iterator();
    			while (iter.hasNext()){
    				HttpCookie ck = iter.next();
    				String message = "Cookie: "+ck.getName();
    				message += " domain: "+ck.getDomain();
    				message += " value: "+ck.getValue();
    				System.out.println(message);
     
    			}
    Et rien ne s'affiche => il ne trouve donc aucun cookies alors que via le navigateur je vois très bien que le cookie est crée

  13. #13
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 776
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 776
    Par défaut
    Pourrais tu donner la vraie adresse de ton site que l'on puisse essayer?

  14. #14
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    Bon j'avance un peu ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    public static void main(String[] args) {
     
    		System.out.println("Start");
    		try{
    			CookieManager cm = new CookieManager();
    			URL url = new URL("http://www.monsite.com/");
    		    URLConnection conn = url.openConnection();
    		    conn.connect();
    		    cm.storeCookies(conn);
    		    cm.setCookies(url.openConnection());
    		    System.out.println("CM: "+cm);	  
    		    }
    		}
    		catch(Exception e){
    			System.out.println(e);
    		}
    }
    Et je trouve enfin mon cookie !!

    Maintenant, est ce que c'est possible de faire un connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    URL url = new URL("http://www.monsite.com/");
    		    URLConnection conn = url.openConnection();
    En passant le cookie??

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 186
    Par défaut
    La bataille est finie!!!

    Enfin trouvé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    public static void main(String args[]){
     
     
    	CookieManager cm = new CookieManager();	//Ma Classe cookieManager un peu modifier pour quelle marche pour tous les sites. (merci Uther pour l'idée)
    	String fileUrl = null;
     
     
     
    	try {
    	            URL url = new URL("http://www.monsite.com/");
    				HttpURLConnection connection = (HttpURLConnection)url.openConnection();
     
    	            connection.setInstanceFollowRedirects(Boolean.TRUE);
    	            connection.setFollowRedirects(Boolean.TRUE);
    	            connection.setRequestProperty ( "User-agent", "Mozilla/5.0" );
    	            connection.getContent();
    	            connection.connect();
    	            cm.setCookies(connection);
    	            cm.storeCookies(connection);
    	            System.out.println(cm);
     
    		        URL url1 = new URL("http://www.monsite.com/page1.php");
    	            HttpURLConnection connection1 = (HttpURLConnection)url1.openConnection();
    	            cm.setCookies(connection1);
    	            connection1.getContent();
    	            connection1.connect();
    	            System.out.println(cm);
    	            BufferedReader in1 = new BufferedReader(new InputStreamReader(connection1.getInputStream()));
    		        String ligne1;
    		        while ((ligne1 = in1.readLine()) != null) {
    		        	System.out.println(ligne1);
    		        }
     
     
    	} catch (Exception ex) {
    	            System.out.println(ex.getMessage());
    	            System.out.println(ex.getStackTrace());
    	        }
     
    	}
    }
    Voilà merci à tous pour vos conseil

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [http] perte de requette http après redirection
    Par okoax dans le forum Serveurs (Apache, IIS,...)
    Réponses: 6
    Dernier message: 05/05/2006, 10h31
  2. [Cookies] Cookies plusieurs variables
    Par FoxLeRenard dans le forum Langage
    Réponses: 5
    Dernier message: 21/04/2006, 15h46
  3. Socket, Requette http
    Par zenux dans le forum C++
    Réponses: 19
    Dernier message: 02/03/2006, 22h05
  4. Requette HTTP POST
    Par CrazySeb dans le forum C++
    Réponses: 7
    Dernier message: 25/02/2006, 15h17
  5. [Servlet] requette http et getParameterValues()
    Par Flobel dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 07/01/2005, 11h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo