[HTTP] Envoi de fichiers par http post
Bonjour, je souhaiterais faire un post vers un serveur d'un fichier xml. Je ne sais pas à quel endroit il faut ajouter le fichier est-ce qu'il y a une fonction spéciale pour faire ça.
voici le code que j'ai fait mais qui ne fonctionne pas. Dans ce code j'ajoute directement dans la requete le fichier que je veux poster.
Code:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
public String post(String monURL,String data,File file) {
String response = "";
try {
//ouvrir une connexion
URL url = new URL(monURL) ;
URLConnection conn = url.openConnection();
conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.setDoOutput(true);
OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
//envoi des données dans la requête
wr.write(data);
// ouverture du flux de lecture pour le fichier
FileInputStream fis = new FileInputStream(file);
String readFile = "";
try {
// création d'un buffer de 4Ko ( améliore la vitesse de transmission)
byte[] buf = new byte[4 * 1024];
@SuppressWarnings("unused") int bytesRead;
while ((bytesRead = fis.read(buf)) != -1) {
String b = new String(buf);
readFile+=b;
}
}finally{
if (fis != null) fis.close();
//envoi du fichier
wr.write(readFile);
}
wr.flush();
// reception de la réponse
BufferedReader rd = new BufferedReader(new InputStreamReader(conn.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
// Process line...
response+=line;
}
wr.close();
rd.close();
System.out.println( response ) ;
} catch (Exception e) {
e.printStackTrace();
}
return response;
} |