Bonjour à tous !

Voilà je souhaiterais envoyer un tableau par requête POST en java.
En parcourant la FAQ je suis tombé sur ceci expliquant comment réaliser une requête POST en Java ce qui répondait à mon problème.

J'ai juste un petit soucis c'est que la solution proposée correspondrait à un formulaire avec les paramètres suivants : {"clefA" => "valeurDeClefA", "clefB" => "valeurDeClefB"}.

Or j'ai un formulaire avec les paramètres suivants : {"clefC" => {"clefA" => "valeurDeClefA", "clefB" => "valeurDeClefB"}}.

J'ai essayé naïvement le code suivant :
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
public void doPost(String adresse){
   OutputStreamWriter writer = null;
   BufferedReader reader = null;
   try {
     //encodage des paramètres de la requête
     //Il n'y a que cette partie qui diffère de la FAQ
      String donnees = URLEncoder.encode("clefC", "UTF-8") + "={" + URLEncoder.encode("clefA", "UTF-8") +
                        "=" + URLEncoder.encode("valeurDeClefA", "UTF-8") + "&" + URLEncoder.encode("clefB", "UTF-8") +
                        "=" + URLEncoder.encode("valeurDeClefB", "UTF-8") + "}";
 
      //création de la connection
      URL url = new URL(adresse);
      URLConnection conn = url.openConnection();
      conn.setDoOutput(true);
 
      //envoi de la requête
      writer = new OutputStreamWriter(conn.getOutputStream());
      writer.write(donnees);
      writer.flush();
 
      //lecture de la réponse
      reader = new BufferedReader(new InputStreamReader(conn.getInputStream()));
      String ligne;
      while ((ligne = reader.readLine()) != null) {
         System.out.println(ligne);
      }
   }catch (Exception e) {
      e.printStackTrace();
   }finally{
      try{writer.close();}catch(Exception e){}
      try{reader.close();}catch(Exception e){}
   }
}
Sans succès...

Ma question est donc la suivante, comment faire passer un tableau dans une requête POST en Java ?

Merci d'avance.