Bonsoir a tous,

J'utilise HttpClient d'Apache pour faire passer facilement des types "multipart/form-data" en "POST".

Très simplement j'envois une premiere série de paramètres (un fichier, et une taille) à une URL. Celle-ci me renvoit un identifiant (généré aléatoirement)

Puis avec cette identifiant, je réenvois une autre série de paramètre (dont l'identifiant), qui doit me renvoyer un résultat final (un nombre).

L'objet permettant cela :

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
public class Connexion{
 
   HttpClient client;
 
   public Connexion(){
      client = new HttpClient();		
   }
 
 
	public String getMultiPartPostMethod(Map parameters) throws IOException,HttpException{
		Set paramSet = parameters.keySet();
		Iterator paramIterator = paramSet.iterator();
		MultipartPostMethod mPost = null;
		try{
			mPost = new MultipartPostMethod(URL);
			mPost.setFollowRedirects(true);
   mPost.getParams().setCookiePolicy(CookiePolicy.IGNORE_COOKIES);
			while(paramIterator.hasNext())
			{
				 String key = (String) paramIterator.next();
				 if(key != VAR_FILE)
					 mPost.addParameter(key, (String) parameters.get(key));
				 else
					 mPost.addParameter(key, (File) parameters.get(key));
			}
			int respCode = client.executeMethod(mPost);
			if(respCode == HttpStatus.SC_OK){
				String result = null;
				StringTokenizer strTok = new StringTokenizer(mPost.getResponseBodyAsString(),"=");
				while(strTok.hasMoreTokens())
					result = strTok.nextToken();
				return result;
			}else{
				throw new HttpException("ERROR to " + URL + ". Code Error " + respCode + " - Page Error " + mPost.getResponseBodyAsString());
			}
		}catch (IOException ioe){
			ioe.printStackTrace();
			throw ioe;
		} finally{
			if(mPost != null){
				System.err.println("Release Connection");
				mPost.releaseConnection();
 
			}
		}
	}
Donc d'une autre classe j'appelle 2 fois la méthode getMultiPartPostMethod

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
public class MaClasse{


public static void main(String[] args){

   Map parameters;

   // Mes traitements . . .

   Connexion con = new Connexion();

   Object object1 = con.getMultiPartPostMethod(parameters);

   Map secondParameters;

   // Mes traitements . . . DONT l'utilisation indispensable de l'object1

    Object object2 = con.getMultiPartPostMethod(secondParameters);

}

}

Hors au lieu de recevoir un nombre, je recois une erreur comme quoi l'identifiant n'existe pas ...

Après avoir vérifier sur le serveur, le fichier est bien uploadé, et le code bien généré, cependant je ne recois toujours pas de code.

Il me faut récupérer l'object1, le sérialiser, arreter la JVM, relancer sans la première partie (récupération de l'object1), et j'obtiens finalement un object2 valide.

La question, la voici

Il me semble que HttpClient crée une seule connexion tout au long de la durée de vie de mon appli, mais que faut-il fermer/enlever pour que chaque connexion apparaisse comme une "nouvelle" connexion ?

Si vous avez besoin de plus de précision a ce sujet n'hésiter pas, il me semble que je sois un confus

Merci d'avance pour vos réponses