Bonjour

Je voudrais juste faire un test d'un client qui appelle une servlet en utilisant les flux binaires entre les 2.
Mon client envoie des données binaires dans le flux de la servlet, la servlet "devrait" récupérer ces données binaires et renvoie une réponse au client.
Je ne sais pas pourquoi ma servlet ne reçoit aucune donnée du client, par contre mon client reçoit bien la réponse de ma servlet.
Le problème vient-il de mon client ou de la servlet?
Qu'est ce que j'ai donc bien pu oublier?
Merci de votre aide

J'utilise le jdk1.6.0_35 et Tomcat 7.0.29.

Code du client
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
 
import java.io.*;
import java.net.*;
 
public class CallServlet
{
  public static void main(String[] args) throws Exception
  {
    URL url = new URL("http://localhost:8080/ServletTest/CMSDKServlet");
 
    URLConnection connection = url.openConnection();
 
    connection.setDoInput(true);
    connection.setDoOutput(true);
 
    // envoie des données vers la servlet
    OutputStream out = connection.getOutputStream();
    PrintStream ps = new PrintStream(out);
    ps.println("client appelle servlet");
    ps.close();
 
    // réponse de la servlet
    InputStream in = connection.getInputStream();
    System.out.println("servlet a envoyé "+in.available()); // OK, j'ai bien le nombre d'octets
    in.close();
  }
}
Code de la servlet
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
 
import java.io.*;
 
import javax.servlet.*;
import javax.servlet.http.*;
 
public class CMSDKServlet extends HttpServlet
{
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    doPost(request, response);
  }
 
  public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
  {
    try
    {
        // données du client
        InputStream is = request.getInputStream();
        System.out.println("client a envoyé "+is.available()); // ERROR ici toujours 0
        is.close();
 
        // réponse envoyée au client
        OutputStream respOut = response.getOutputStream();
        PrintStream ps = new PrintStream(respOut);
        ps.println("servlet renvoie une réponse au client");
        ps.close();
 
    }
    catch(Throwable e)
    {
      e.printStackTrace();
      throw new ServletException(msg, e);
    }
  }
}