ecrire fichier en utilisant http - Java - Programmation
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.
Marsh Posté le 21-04-2009 à 09:28:35
juste en fait les "c" c'était juste un exemple, un mauvais.
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 ctemp puis le poster sur par ex //DirCible
Voici à quoi ressemble mon code sachant que c'est qu'une idée
Source source = new DOMSource(devisToDocument(documentBuilder, numeroDevis, dateCreation, sForm, contexte));
//Création du fichier XML à partir de l'arbre DOM
String name_fic="ctemp" + 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();
}
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