Bonjour à tous,
Voilà un moment que je bloque sur mon problème qui me parait tordu.
J'ai créé une applet qui télécharge d'autres fichiers pour fonctionner (des comptes clients notamment) via le protocole http.
ça fonctionne bien dans 90% des cas, sauf, lorsque je met à jour le fichier juste avant (fichier mis à jour dans l'applet par protocole ftp - via une interface manager) et qu'ensuite je re-télécharge pour vérifier que les données sont bien uploadé sur le serveur (http).
Dans ce cas là, le téléchargement http me "re-télécharge" l'ancienne version et non la nouvelle...
Je précise que ça fonctionne lorsque je travail sous éclipse et que cela arrive uniquement lorsque l'applet est lancé à partir du navigateur (Mozilla firefox 2.0)
J'ai évidament vérifié via un logiciel ftp que mon serveur avait bien été mis à jour, le problème vient pas de l'upload.
Voici la fonction qui télécharge les fichiers
Si vous avez des idées du "Pourquoi il me télécharge pas le nouveau fichier mais l'ancien ?" je suis preneur..protected byte[] getStreamFile( URL url) throws Throwable {
byte[] data = null;
URLConnection urlC = url.openConnection();
urlC.connect();
int fileLenght = urlC.getContentLength();
if (fileLenght == -1) {
throw new IOException("Error on download utilities by server");
}
else {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM hh:mm:ss" );
data = new byte[fileLenght];
}
InputStream in = null;
try {
in = urlC.getInputStream();
} catch (IOException e) {
return null;
}
int input = 0;
byte[] buff = new byte[1024];
int l = in.read(buff);
while (l > 0) {
for(int i=0; i<l; i++)
data[i+input] = buff[i];
input+=l;
l = in.read(buff);
}
in.close();
return data;
}
Petite précision, j'ai aussi essayé une autre méthode
Merci d'avance pour vos réponses !!protected byte[] getStreamHTTPProtocole( URL url) throws Throwable {
int BUF_SIZE = url.openConnection().getContentLength();
char[] buf = new char[BUF_SIZE];
Socket socketToWeb;
PrintWriter toWeb;
BufferedReader fromWeb;
String str = "";
int nb = 0;
try {
socketToWeb = new Socket( "http://www.simulator.tmtgonline.com", 80);
toWeb = new PrintWriter( new BufferedWriter( new OutputStreamWriter( socketToWeb.getOutputStream())),true);
fromWeb = new BufferedReader( new InputStreamReader( socketToWeb.getInputStream()));
str = "GET "+ url +" HTTP/1.1\r\nHost: "+ httpAddress +"\r\n";
toWeb.println(str);
boolean echoing = true;
boolean isRecept = false;
int size = 0;
while ( !isRecept ) {
System.out.println( "dialogue...");
if ( echoing ) {
str = fromWeb.readLine();
if ( str == null ) break;
if ( str.length() == 0 ) {
echoing = false; // end of header
}
System.out.println("Connection... " + str);
} else {
for (int i=0;i<nb;buf[i++]=0x00);
nb = fromWeb.read(buf,0,BUF_SIZE);
if ( nb == -1 ) {
int j=BUF_SIZE-1;
while ( buf[j] == 0x00 && j > 0 )
j--;
break;
}
System.out.println( "Reception..." + buf.length + "\n" + String.valueOf( buf));
isRecept = true;
}
}
} catch ( IOException e ) { e.printStackTrace(); }
return null;
}
Je m'exprime assez mal, j'espere que vous comprendrez le dilème, je suis dispo pour ajouter plus de détails, merci.
Partager