Bonjour à tous,

je suis en train de développer un client HTTP en Java (parce que la classe HttpURLConnection ne me plaît pas).

J'envoie donc une requête à un serveur apache (get ou post) qui me renvoie une réponse avec la ressource demandée (un fichier html par exemple).

Je récupère ce fichier grâce à une fonction "saveIntoFile()" qui utilise la fonction read de la classe DataIntputStream. Voici ma boucle while qui lit mon flux entrant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
byte[] buff = new byte[bufferSize];			
			int readBytesNb;
			byte[] readBytes;
			
			while ((readBytesNb = reader.read(buff, 0, bufferSize)) != -1) {
				if (readBytesNb == bufferSize) {					
					writer.write(buff);					
				} else {
					readBytes = new byte[readBytesNb];
					System.arraycopy(buff, 0, readBytes, 0, readBytesNb);
					writer.write(readBytes);
				}
			}
Tant que la fonction read retourne autre chose que -1, tout fonctionne correctement. Dès lors qu'elle retourne -1 (c'est-à-dire qu'il n'y a plus rien à lire), il se passe bien 3 secondes avant de sortir de la boucle !

Je ne comprends absolument pas d'où peut provenir ce délai beaucoup trop long à mon goût, constant quelque soit la taille du fichier.

Quelqu'un aurait-il une idée ?