Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : HttpClient [ Réseau & internet / Internet ] (Amine)

mercredi 24 octobre 2007 à 13:22:07 | HttpClient

Amine

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;
     
     return s;
 }


//Pour le test :

try {
   String s = getWebPage(" [ Lien ]");
   System.out.println(s);
//je debug et avant ce deuxième download, je coupe la connexion et il me donne le même contenu en ss que dans la variable s
   String ss = getWebPage(" [ Lien ]");
   System.out.println(ss);
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }


Aidez moi SVP je suis bloqué depuis des jours.

Merci d'avance

mercredi 24 octobre 2007 à 15:01:21 | Re : HttpClient

AlexN

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.

mercredi 24 octobre 2007 à 16:04:08 | Re : HttpClient

Amine

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.

merci quand même

mercredi 24 octobre 2007 à 18:12:49 | Re : HttpClient

AlexN

Oui c'est moi qui n'a pas bien lu. Deux clients, deux méthodes, mais la même ressource demandée. Pourquoi les deux réponses seraient différentes ?

mercredi 24 octobre 2007 à 18:52:30 | Re : HttpClient

Amine

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...


jeudi 25 octobre 2007 à 11:42:09 | Re : HttpClient

AlexN

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.



Cette discussion est classé dans : string, client, get, httpclient, setrequestheader


Répondre à ce message

Sujets en rapport avec ce message

un (petit) problème incompréhensible!! [ par joshua91 ] Salut la troupe!voici mon "pseudo"code:public Client trouveclient(String nom,String nclient){ for(int i=0 ; i Client a = (Client)clients.elementAt(i); [Client/Serveur][Multi-Thread] Serveur/ Fcts synchronisées [ par loring ] J'ai une application Client/Serveur. Les clients accèdent aux fonctions du serveurs qui lui ensuite accède à ma base de données.CLIENT SERVEUR BD P Problème de récupération d'un fichier Excel avec HttpClient [ par kobee12 ] Bonjour,J'essaie de récupérer un fichier excel en utilisant l'api HttpClient. Seulement, lorsque je récupère le fichier, celui-ci a des caractères qui jtable+jcombo [ par khatouma ] salut tout le monde j'ai tellement besoin d 'un aidesi il y a  qlq qui peut me dir la methode pour ajouter une ligne dans une jtable en cliquant sur l probleme d'unreachable statement [ par marsrepart ] hello tout le monde.. je suis un newbies....Voila, je dois faire un client/serveur (style FTP)java qui dialogue par le biais de socket (normal .. je s Serveur multiple qui redistribue les données à TOUT ses clients... [ par Hellway ] Voilà, mon problème est assez compliqué et je n'ai trouvé en aucun endroit de la toile réponse à ma question. Je tente donc le coup ici.Je bosse actue classe personne erreur comprend pas merci de m aider [ par djterrence ] Bon je vais y aller classe par classe alors dans la classe personne avec pour descriptif celui-ci La classe Personne Description Cette classe gère retourner une référence vers un attribut [ par Chatbour ] Salut à tous et à toutes class Etudiant{<span style="color: rgb(0 Client Telnet [ par __def ] Bonjour, Je cherche une classe qui va me permettre de se connecter à un serveur Telnet, envoyer des commendes et récupérer les résultats dans un strin Compter le nombre de tabulations dans un String [ par stongolm ] Bonjour,je suis en train de mettre au point un parseur de fichier txt. Mon délimitateur est la tabulation (je sais, ce n'est pas moi qui ait choisi: (


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,530 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.