Bonjour !
J'utilise une fonction qui permet de récupérer le code source d'un site.
Pour 99% des sites, elle fonctionne, mais parfois j'obtiens cette erreur :
1 mars 2013 17:34:10 org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: I/O exception (java.net.SocketException) caught when processing request: Connection reset
1 mars 2013 17:34:10 org.apache.http.impl.client.DefaultRequestDirector tryExecute
INFO: Retrying request
Je ne cherche pas à corriger l'erreur, puisqu'elle est sûrement causée par les sites dont j'essaye de récupérer le code source.
Je cherche plutôt à afficher un petit message du type "Le site est indisponible" à la place du gros message d'erreur rouge.
Ce que je ne comprends pas c'est que j'ai l'impression de gérer toutes les exceptions qui peuvent arriver, donc comment cela se fait-il que cette erreur survienne ?
Voici le code de la fonction qui permet de récupérer le code source d'une page :
Code :
- public static String getsource(String url)
- {
- HttpClient httpclient = new DefaultHttpClient();
- httpclient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 10000);
- httpclient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 10000);
- httpclient.getParams().setParameter(ClientPNames.COOKIE_POLICY, "ignoreCookies" );
- HttpGet httpget = new HttpGet(url);
- StringBuilder source = new StringBuilder();
- String resa = null;
- try
- {
- HttpResponse response = httpclient.execute(httpget);
- BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
- long ms = System.currentTimeMillis();
- boolean timeout_over = false;
- String line;
-
- while ((line = reader.readLine()) != null && !timeout_over)
- {
- source.append(line+"\r\n" );
- if(System.currentTimeMillis()-ms>10000)
- { timeout_over = true; }
- }
- if(timeout_over)
- {
- resa = "Erreur";
- System.out.println("Timeout Over" );
- httpget.abort();
- }
- else
- { resa = source.toString().trim(); }
-
- }
- catch(IOException ioe)
- {
- resa = "Erreur";
- System.out.println("IO exception" );
- }
- catch(Exception e)
- {
- resa = "Erreur";
- System.out.println("Exception" );
- }
- return resa;
- }
|
Merci d'avance pour votre aide !
Bonne journée !