java.net.Exception socketexception: le Réseau est inaccessible: se connecter
Je suis en train de télécharger un fichier xml fichier texte à partir d'un serveur web à l'aide de cette méthode:
static void download (String url , String fileName) throws IOException{
FileWriter xmlWriter;
xmlWriter = new FileWriter(fileName);
System.out.println("URL to download is : " + url);
//here Exception is thrown/////////////////////////////////
BufferedReader inputTxtReader = new BufferedReader
(new BufferedReader(new InputStreamReader(addURL.openStream())));
////////////////////////////////////////////////////////
String str ;
String fileInStr = "";
str = inputTxtReader.readLine();
while (!(str == null) ){///&& !(str.equals("</tv>"))
fileInStr += (str + "\r\n");
str = inputTxtReader.readLine();
}
xmlWriter.write(fileInStr);
xmlWriter.flush();
xmlWriter.close();
System.out.println("File Downloaded");
}
Parfois, cette exception est levée (où j'ai spécifié est code):
java.net.SocketException: Network is unreachable: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.Socket.connect(Socket.java:518)
at java.net.Socket.connect(Socket.java:468)
at sun.net.NetworkClient.doConnect(NetworkClient.java:157)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:389)
at sun.net.www.http.HttpClient.openServer(HttpClient.java:516)
at sun.net.www.http.HttpClient.<init>(HttpClient.java:233)
at sun.net.www.http.HttpClient.New(HttpClient.java:306)
at sun.net.www.http.HttpClient.New(HttpClient.java:318)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(HttpURLConnection.java:788)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(HttpURLConnection.java:729)
at sun.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:654)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:977)
at java.net.URL.openStream(URL.java:1009)
at MessagePanel.download(MessagePanel.java:640)
at WelcomThread.run(MainBody2.java:891)
Merci de me guider
Merci à vous tous.
!(str == null)
juste des regards confus, vous devriez écrire str != null
.Où et comment êtes-vous de l'initialisation de la addURL variable?
OriginalL'auteur sajad | 2011-07-26
Vous devez vous connecter pour publier un commentaire.
Vous êtes confrontés à une connexion à la rupture. Cela se passe en 3G, en WiFi ou en "plaine" de connexion sur un ordinateur?
De toute façon, vous devez supposer que la connexion peut être perdu de temps à autre, lors de l'écriture de votre application. Par exemple, avec les téléphones portables, ce qui arrive fréquemment dans le tube, dans les sous-sols, etc. Avec PC apps, c'est de moins en moins fréquentes, mais se produit parfois.
Une nouvelle tentative peut être une bonne solution. Et un message d'erreur propre qui explique le réseau n'est pas disponible en ce moment.
OriginalL'auteur Shlublu
"Réseau inaccessible" signifie simplement que. Vous n'êtes pas connecté à un réseau. C'est quelque chose en dehors de votre programme. Pourrait être un mauvais paramètres d'exploitation, carte réseau, routeur, etc.
addURL
n'importe où là-dedans?ha, bonne prise!
OriginalL'auteur Ryan Stewart
J'ai fait face à la situation de prise en
java.net.SocketException
pas parfois, mais à chaque fois. J'ai ajouté-Djava.net.preferIPv4Stack=true
à java en ligne de commande et mon programme a commencé à travailler correctement.OriginalL'auteur Fyodor Menshikov
Je n'ai pas testé avec votre code de sorte qu'il serait totalement différents cas, et encore, je tiens à partager mon expérience. (Aussi, ce doit être trop en retard de réponse mais, j'espère que cette réponse ne serait toujours aider quelqu'un dans le futur)
J'ai récemment fait l'objet d'une expérience similaire comme vous tels que, à certains moments, le Réseau est inaccessible, mais parfois non. En quelques mots, ce qui était la cause est trop petit temps. Il semble Java throws IOException avec, précisant que "le Réseau est inaccessible" lorsque la connexion échoue à cause de cela. Il est donc trompeur (je m'attends à quelque chose comme de dire "le temps") et j'ai passé presque un mois pour le détecter.
Ici, j'ai trouvé un autre post sur la façon de définir le temps.
Alternative à java.net.URL personnalisée paramètre de délai d'attente
Encore une fois, ce ne serait pas le même cas que vous avez vécu, mais quelqu'un pour l'avenir.
OriginalL'auteur Koki Hayashi