ecrire fichier en utilisant http

ecrire fichier en utilisant http - Java - Programmation

Marsh Posté le 20-04-2009 à 19:44:26    

Bonjour
 
Mon programme sous struts tourne sur unix et je souhaite ecrire un fichier sur une autre machine windows, pour cela je dois utiliser http
je ne peux pas utiliser fileupload car je n'ai pas de formulaire.
Pour cela je souhaite utiliser la classe URLConnection.
Je suppose que je dois créer en local mon fichier sur c:/temp puis le poster sur par ex //DirCible
 
Voici à quoi ressemble mon code sachant que c'est qu'une idée

Citation :


Source source = new DOMSource(devisToDocument(documentBuilder, numeroDevis, dateCreation, sForm, contexte));
        //Création du fichier XML à partir de l'arbre DOM
        String name_fic="c:/temp" + File.separator + "aa_" + numero + ".xml";
        FileOutputStream fileOutputStream = new FileOutputStream(name_fic);
        Result result = new StreamResult(fileOutputStream);
        transformer.transform(source, result);
        fileOutputStream.close();
         
     URL url = new URL("http://repCible/sous" );
     URLConnection connection = url.openConnection();
     connection.setDoOutput(true);
     connection.setDoInput(true);
     connection.setDoInput(true);
     connection.setUseCaches(false);
         // set some request headers
     connection.setRequestProperty("Connection", "Keep-Alive" );
     connection.setRequestProperty("Cache-Control", "no-cache" );
     connection.setRequestProperty("HTTP_REFERER",
                              "http://pluton/recette" );
     connection.setRequestProperty("Content-Type",
                              "multipart/form-data; charset=utf-8;boundary=****4353" );
     
     DataOutputStream dstream = new DataOutputStream(connection.getOutputStream());
      dstream.writeBytes("--****4353\r\n" );
         dstream.writeBytes("Content-Disposition: form-data; name=\"uploadedFile\"; filename=\"" +
           name_fic+ "\"\r\nContent-Type: application/octet-stream\r\n\r\n" );
      //write file content
        FileInputStream fi = new FileInputStream(name_fic);
        byte[] bt = new byte[102400];
        int cnt = fi.read(bt);
        int numOfByteSent = cnt;
        while (cnt == bt.length) {
            dstream.write(bt, 0, cnt);
            dstream.flush();
            cnt = fi.read(bt);
            numOfByteSent += cnt;
        }
        dstream.writeBytes("\r\n--****4353--\r\n\r\n" );
        dstream.flush();
        dstream.close();
        fi.close();
        // end write file content
         
        try {
            DataInputStream in =
                    new DataInputStream(connection.getInputStream());
            String sIn;
            while ((sIn = in.readLine()) != null) {
                if (sIn != null) {
                    System.out.println(sIn);
                }
                if (sIn.equals("upload success" )) {
                   
                }
            }
           
        } catch (Exception ex) {
            ex.printStackTrace();
        }


Citation :

Caused by: java.io.IOException: Server returned HTTP response code: 405 for URL: http://repCible/sous


 
J'ai plusieurs erreurs dont celle ci dessus , je ne vois pas bien connection entre output et input? et surtout
 je vois pas à quel moment il pourrai créer mon fichier sur //DirCible???
 
thanks

Reply

Marsh Posté le 20-04-2009 à 19:44:26   

Reply

Marsh Posté le 20-04-2009 à 22:00:35    

Pourquoi y'a des c : partout si le pc qui envoit tourne sous nunux ?
 
Le pc qui reçoit doit forcement accepter et gérer la réception des fichiers par post ... Ca tombe bien, le bout de code que t'as pompé utilise un envoi par post. T'es obligé d'adapter le pc qui reçoit.


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
Reply

Marsh Posté le 21-04-2009 à 09:28:35    

juste en fait les "c" c'était juste un exemple, un mauvais.

Reply

Sujets relatifs:

Leave a Replay

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