Citation Envoyé par kazabliz Voir le message
j'ai vérifié les méthodes getConnectTimeout() et getReadTimeout(). et elles me retournent 0 à chaque fois. de toute façon c'est normale car elle retournent 0 si on fait pas des set. et comme je ne sais pas le temps de traitement avant qu'une réponse soit dispo.
Tu dois mettre un timeout maximum, et gérer dans ton client le cas ou tu n'obtiens rien une fois le timeout passé. Tu dois faire des tests et calculer le temps moyen de réponse du serveur, puis augmenter un peu la valeur et tu obtiens ton timeout. Il n'y a pas de règle, c'est à toi d'expérimenter.

J'ai une question sur les string qui me gène.

J'essaie de lire le fichier qui résulte de la requête et comme mon fichier est de 5 Mo alors ça bloque je me demande est ce que une variable String est de taille limite ?
Qu'est-ce qui bloque ? Donne l'erreur !
La taille de la chaîne est fonction de la mémoire allouée à la JVM.

voilà le code de lecture que j'utilise :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static String lire (String path) 
	{
		BufferedReader lect ;
		String tmp = "";
		try
		{
			lect = new BufferedReader(new FileReader(path)) ;
			while (lect.ready()==true) 
			{
				tmp += lect.readLine() ; 
			}//while
		}//try
		catch (NullPointerException a)
		{
			System.out.println("Erreur : pointeur null");
		}
		catch (IOException a) 
		{
			System.out.println("Problème d'IO");
		}
		return tmp;
	}//lecture
Ne JAMAIS faire comme ça ! La concaténation de chaîne construit de nouvelles instances à chaque fois, c'est très consommateur !
Tu dois utiliser un StringBuilder avec la méthode StringBuilder.append().
Mais l'idéal serait encore de lire par tableau de byte avec java.io.BufferedInputStream.read(byte[], int, int), tu n'aurais ainsi aucune conversion.

Quel traitement fais-tu avec cette chaîne ? Peut-être que tu n'as pas besoin de tout stocker avant de faire un traitement ?