cs_Amine
Messages postés36Date d'inscriptionvendredi 24 août 2001StatutMembreDernière intervention24 octobre 2007
-
24 oct. 2007 à 13:22
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 2014
-
25 oct. 2007 à 11:42
Bonjour tous le monde !
Au fait, j'ai un problème lors de l'utilisation de la classe HttpClient de Apache (org.apache.commons.httpclient.HttpClient) c'est que lorsque je download une page à partir d'un URL1 et je "coupe" la connexion internet artificiellement (je change de DNS pour que le download echoue), lorsque je lance le download une deuxième fois sur le même URL1 il me retourne le contenu de la page même si la connexion est coupée !!! C'est surement un problème de cache mais je ne sais pas comment le désactiver.
Voici le coode que j'utilise :
//Fonction download
public static String getWebPage(String url) throws Exception {
GetMethod get = new GetMethod(url);
org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
client.getParams().setCookiePolicy(CookiePolicy.BROWSER_COMPATIBILITY);
client.getParams().setBooleanParameter("http.protocol.allow-circular-redirects", true);
client.getParams().setSoTimeout(30000);
client.getParams().setConnectionManagerTimeout(60000);
get.setRequestHeader("User-Agent", "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6");
get.setRequestHeader("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5");
get.setRequestHeader("Accept-Language" , "en,en-us;q=0.8,es-es;q=0.5,es;q=0.3");
get.setRequestHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
//get.setRequestHeader("Keep-Alive", "300");
get.setRequestHeader("Connection", "keep-alive");
get.setRequestHeader("Pragma", "no-cache, no-store");
get.setRequestHeader("Cache-Control", "no-cache, no-store");
String s="";
try {
client.executeMethod(get);
byte[] response = get.getResponseBody();
s = new String(response,0,response.length,"UTF-8");
} catch (Exception e) {
System.out.println("Error or Timeout ! skiping url");
}
url = get.getURI().toString();
get.releaseConnection();
get=null;
client=null;
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 24 oct. 2007 à 15:01
Tu crées une GetMethod à chaque appel de getWebPage, ça fait deux connexions différentes. Même si elles utilisent le même client. C'est peut être pour ça.
cs_Amine
Messages postés36Date d'inscriptionvendredi 24 août 2001StatutMembreDernière intervention24 octobre 2007 24 oct. 2007 à 16:04
Salut,
Je ne comprend pas votre réponse... j'appelle getWebPage() deux fois et à chaque appel je cree un nouveau client : org.apache.commons.httpclient.HttpClient client = new org.apache.commons.httpclient.HttpClient();
donc les objets sont différents à chaque appel.
cs_Amine
Messages postés36Date d'inscriptionvendredi 24 août 2001StatutMembreDernière intervention24 octobre 2007 24 oct. 2007 à 18:52
La différence entre les 2 appels de la méthode getWebPage(url) c'est que la connexion Internet est disponible pour la première et coupée pour la deuxième, donc logiquement pour le deuxième appel ça doit retourner null ou bien donner une exception... lui il me donne un contenu String non null et qui est égal au résultat du 1er appel avec connexion dispo !
J'espère que c'est claire mnt...
J'attends tjrs votre aide...
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_AlexN
Messages postés694Date d'inscriptionlundi 5 décembre 2005StatutMembreDernière intervention 8 janvier 201419 25 oct. 2007 à 11:42
je ne comprend pas ce que veux dire "je change de DNS". Mais si deux instances de clients http avec chacune leur instance de méthodes demandent la même ressource, même si le serveur de noms n'est pas le même, il n'y a aucune raison pour que les réponses (s et ss) changent. Les deux connexions sont distinctes, mais la ressource demandée est la même, peu importe le chemin pour y arriver.