UrlConnection qaund la connexion ne peut pas être effectuée

Résolu/Fermé
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 - 12 juin 2014 à 20:08
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 - 14 juin 2014 à 00:19
Bonjour,

j'utilise la classe Java UrlConnection pour me connecter a plusieurs URL ;-)

voila le code :
 
import java.net.*;
import java.io.*;
public class format {
public static void main(String[] args) throws Exception {
URLConnection urlConnection;
InputStream httpStream;
String chaine="";
String fichier ="Stations.txt";
try {
InputStream ips=new FileInputStream(fichier);
InputStreamReader ipsr=new InputStreamReader(ips);
BufferedReader br=new BufferedReader(ipsr);
String ligne;
while ((ligne=br.readLine())!=null){

URL aURL = new URL("http://api.openweathermap.org/data/2.5/weather?"+"q="+ligne+"&mode=xml");

urlConnection = aURL.openConnection(); // open URL (HTTP query)
httpStream = urlConnection.getInputStream(); // Open data stream
System.out.println(aURL.toString());
chaine+=ligne+"\n";
}
br.close();
}//fin try
catch(java.net.MalformedURLException ex)
{
System.out.println ("je ss ici");
}
catch (final IOException e) {
System.out.println ("désolée y a pas de connexion");
e.printStackTrace();
}


}
}
je récupere une partie de mon URL a partir d'un fichier texte ,et je récupère les données d'un URL sur postgresql.


Mon problème est : parfois ça plante sur des URL que j'ignore la cause ,ça plante et je rentre dans l'exception que y a pas de connexion :
désolée y a pas de conexion
java.io.IOException: Server returned HTTP response code: 500 for URL: http://api.openweathermap.org/data/2.5/weather?q=Ain_Kercha&mode=xml
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at format.main(format.java:29)

et quand je refait l'exécution ça plante sur un autre URL et pour l'URL qui ça planté auparavant ça a marché, comment on sait la cause de ça ? peut être c'est a cause de ma connexion internet? ,je cherche une manière a bouclé sur un URL un moment jusqu'à que la connexion réussira,est ce que y a une possibilité de faire ça ?

avez vous une idée ?
merci beaucoup pour votre aide )


A voir également:

1 réponse

ProvencaleLeGaulois Messages postés 48 Date d'inscription lundi 2 juin 2014 Statut Membre Dernière intervention 18 septembre 2014 6
Modifié par ProvencaleLeGaulois le 13/06/2014 à 10:38
Bonjour,

L'erreur http 500 correspond à une erreur interne du serveur.
Donc cette erreur peut effectivement survenir de façon épisodique et aléatoire.
Source : http://fr.wikipedia.org/wiki/Liste_des_codes_HTTP

Si tu veux boucler sur l'url qui ne marche pas tu peux mettre ton "try catch" dans ta boucle while et remettre une boucle while dont on ne sort que si on a pas eu d'exception (par contre c'est dangereux car tu risques de boucler à l'infini si la page n'existe réellement pas... ou si le serveur est down...)


Dans l'idée ça donnerait :
try{
//mon code pour ouvrir le fichier
}catch(IOException e){
//...
}

//boucle sur les lignes du fichier
while ((ligne=br.readLine())!=null){
	 URL aURL = new URL("http://api.openweathermap.org/data/2.5/weather?"+"q="+ligne+"&mode=xml");

	//puis une boucle, on ne sait pas combien de fois ça va boucler... donc je met while true.
	//Mais tu peux mettre une limite pour ne pas que ça boucle à l'infini en cas de problème.
	while(true){

		try{
			//mon traitement

			//fini par break, pour sortir de la boucle
			break;

		//si une exception est catchée, le break ne sera pas exécuté donc on continue sur la même url.
		}catch(java.net.MalformedURLException ex){
			System.out.println ("ça marche pas, on continue");
		}catch (final IOException e) {
			System.out.println ("ça marche pas, on continue");
		}

	}
}

0
sarah! Messages postés 45 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 16 juin 2014 3
14 juin 2014 à 00:19
Bonsoir ,

ProvencaleLeGaulois merci beaucoup l'idée est juste parfaite ça marche nickel pour le moment
0