[SSL] Envoi de parametres et réceptions

Envoi de parametres et réceptions [SSL] - Java - Programmation

Marsh Posté le 27-02-2006 à 14:32:49    

Bonjour,
 
Mon programme a pour but d'envoye un flux XML par la méthode post à une servlet, puis de récupérer les informations contenue dans la page (Flux XML aussi) en retour.
 
En utilisant un connexion URL, il n'y a pas de probleme, ça marche.
Mais puisque je veux que le SSL soit possible, il a fallu que je passe par un socket.
Hors le socket ne connait que l'adresse de l'host (ici localhost), mais pas l'adresse exact de ma servlet.
J'ai teste de la maniere ci-dessous mais ça ne marche pas.
 
 
Code Client :

Code :
  1. public class Test {
  2.  
  3.    public static final int PORT = 443;
  4.     public static final String HOST = "localhost";
  5.     public static final String KEYSTORE_FILE = "C:/Dev/Tomcat/conf/keystore.ssl";
  6.     public static final String ALGORITHM = "sunx509";
  7.     public static final String PASSWORD = "xxx";
  8.    /**
  9.     * @param args
  10.     */
  11.    public static void main(String[] args) {
  12.       try {
  13.             SSLSocket socket = null;
  14.             KeyManagerFactory kmf;
  15.             KeyStore ks;
  16.             TrustManagerFactory tmf;
  17.             SSLContext sslc;
  18.             String pathSave="c:\\sauv\\";
  19.             kmf = KeyManagerFactory.getInstance(ALGORITHM);
  20.             ks = KeyStore.getInstance("JKS" );
  21.             ks.load(new FileInputStream(KEYSTORE_FILE), PASSWORD.toCharArray());
  22.             kmf.init(ks, PASSWORD.toCharArray());
  23.             tmf = TrustManagerFactory.getInstance(ALGORITHM);
  24.             tmf.init(ks);
  25.             sslc = SSLContext.getInstance("TLS" );
  26.             sslc.init(kmf.getKeyManagers(), tmf.getTrustManagers(), null);
  27.             SSLSocketFactory sf = sslc.getSocketFactory();
  28.             socket = (SSLSocket) sf.createSocket(HOST, PORT);
  29.             System.out.println("Client connecte\n" );
  30.          
  31.             OutputStreamWriter writer = null;
  32.             /**
  33.           * ENVOI D'UN DOCUMENT XML A LA SERVLET
  34.           */
  35.             String donnees = "GET  Dialexc/DialexcServlet";
  36.           /*
  37.            String donnees = "GET  /Dialexc/DialexcServlet?"+ URLEncoder.encode("XML", "UTF-8" )+
  38.              "="+URLEncoder.encode(FileToString(new File("c:\\test.xml" )), "UTF-8" )+ " HTTP/1.1"
  39.              */
  40.           System.out.println(donnees);
  41.          //envoi de la requête
  42.          writer = new OutputStreamWriter(socket.getOutputStream());
  43.          writer.write(donnees);
  44.          writer.flush();
  45.        
  46.          /**
  47.           * RECUPERATION DU DOCUMENT EN RETOUR
  48.           */
  49.        
  50.           // création d'une fabrique de documents
  51.            DocumentBuilderFactory fabrique = DocumentBuilderFactory.newInstance();
  52.            // création d'un constructeur de documents
  53.            DocumentBuilder constructeur = fabrique.newDocumentBuilder();
  54.            System.out.print(socket.getInputStream());
  55. [...]


 
La console me ressort cela :
 

Code :
  1. Client connecte
  2. GET  Dialexc/DialexcServlet
  3. com.sun.net.ssl.internal.ssl.AppInputStream@1a16869


 
Au niveau serveur, j'ai mis un out lors de l'entre dans la servlet afin de vérifier si cela passe bien dedans. Apparemment ça ne passe pas!
 
Une idee ??

Reply

Marsh Posté le 27-02-2006 à 14:32:49   

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed