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

Applets Java Discussion :

HttpCLient et Session


Sujet :

Applets Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Par défaut HttpCLient et Session
    Bonjour,

    Avec une applet je veux envoyer un fichier à une servlet.

    Avec HttpsURLConnection je n'ai pas de problème sauf que pour l'envoi du fichier, il envoi réellement le flux seulement au moment du clsoe du OutpuStream ou du getResponseCode().

    Les fichiers envoyés étant un peu gros, j'ai des OutOfMemory.
    Apperement il s'agit d'un bug qui a été corrigé sur une version de la jdk 1.5

    Les utilisateurs pouvant être sur jdk 1.4 je dois trouver une autre solution.

    Je suis donc passé à HttpClient. Je n'ai plus de problème de OutOfMemory, par conte dans ma servlet, il ne retrouve pas la session qui a été ouverte précédemment.

    Je cherche donc un moyen pour que le HttpClient utilise la session en cours.
    Je pense que l'on doit la récupérer dans un paramètre de l'applet, mais je n'ai pas encore trouvé.

    Voici le code que j'utilise pour envoyer le fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Protocol.registerProtocol("https", new Protocol("https",
    			(ProtocolSocketFactory)new SimpleSSLProtocolSocketFactory(), 
    			443)); 
     
    File fileToSend = new File(vCheminFichierPli); 
    Part[] parts = {new FilePart(fileToSend.getName(), fileToSend) };
    PostMethod vPost = new PostMethod(url);
    vPost.setRequestEntity(new MultipartRequestEntity(parts,vPost.getParams()));
     
    HttpClient vClient = new HttpClient();
     
    vClient.getHttpConnectionManager().getParams().setConnectionTimeout(5000);
     
    int vCodeHTTP = vClient.executeMethod(vPost);
    Merci de votre aide.

    Dorian

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    On a souvent parler d'HttpClient sur ce forum. (tu peut faire une recherche, je ne suis pas spécialiste de cet API). Mais à mon avis, HttpClient étant un client HTTP (donc émule un browser), il ouvre automatiquement une nouvelle session. En effet, une session est propre à un client (browser, httpclient) et pas à une IP (si tu ouvreun IE et un firefox tu es sur des session différente).

    Je ne connait rien qui permette de récupérer depuis un HttpClient une session d'un browser - et à mon avis ce n'est tout simplement pas possible!

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2006
    Messages : 2
    Par défaut
    Après avoir pas mal cherché j'ai finis par trouver une solution.

    Je passe à ma jsp le jsessionid, et je le transmet en paramètre à l'applet.

    Dans l'applet je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    String sessionId = getParameter("sessionId");
    String query = ";" + C_JSESSIONID.toLowerCase() + "=" + sessionId;                         
    vPost.setQueryString(query);
    vPost.addRequestHeader(C_JSESSIONID, sessionId);
     
    HttpState initialState = new HttpState();
    Cookie sessionCookie = new Cookie(vPost.getHostConfiguration().getHost(), C_JSESSIONID, sessionId, "/", null, false);
    initialState.addCookie(sessionCookie);
    initialState.setCookiePolicy(CookiePolicy.COMPATIBILITY);
    vClient.setState(initialState);
    Il me reste juste à modifier le new Cookie() pour ne plus avoir d'appelle à des méthodes deprecated et ca sera bon.

    Au final, il fallait juste passer le jsessionID en paramètre à l'applet .

    Dorian

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

Discussions similaires

  1. httpclient : Problème de cookie de session
    Par AlexKidd29 dans le forum Entrée/Sortie
    Réponses: 4
    Dernier message: 01/12/2011, 19h44
  2. HTTPClient problème session et cookie
    Par devilalex505 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 30/08/2011, 18h38
  3. HttpClient et les sessions
    Par hed.java dans le forum Développement Web en Java
    Réponses: 0
    Dernier message: 17/01/2011, 08h43
  4. HttpClient - Problème de session
    Par vantom dans le forum Développement Web en Java
    Réponses: 1
    Dernier message: 17/01/2009, 12h37
  5. [XMLRAD] session
    Par jml dans le forum XMLRAD
    Réponses: 4
    Dernier message: 17/12/2002, 09h24

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