2010-04-19 7 views
0

Voici le problème que je suis face: je tente de télécharger un fichier à partir d'un serveur tomcat utilisant le snipet de code suivantproblème lors du téléchargement d'un fichier

try 
{ 
    BufferedInputStream getit = new BufferedInputStream(new URL("http://192.168.2.180:8080/android.apk").openStream()); 
    FileOutputStream saveit = new FileOutputStream(path); 
    BufferedOutputStream bout = new BufferedOutputStream(saveit,1024); 
    byte data[] = new byte[1024]; 
    int readed = getit.read(data,0,1024); 
    while(readed != -1) 
    { 
     bout.write(data,0,readed); 
     readed = getit.read(data,0,1024); 
    } 
    bout.close(); 
    getit.close(); 
    saveit.close(); 
} 
catch(Exception e) 
{ 
    e.printStackTrace 
} 

Les travaux ci-dessus très bien quand je le lance sur la émulateur, mais lorsque je tente de le tester sur mon appareil, il ne fait rien, et ~ 50 sec plus tard, il lance une exception « délai d'attente de prise » à la ligne

BufferedInputStream getit = new BufferedInputStream(new URL("http://192.168.2.180:8080/android.apk").openStream()); 

Qu'est-ce qui se passe et comment puis-je répare le ?

est ici le stacktrace

04-19 12:28:19.865: WARN/System.err(2962): java.net.SocketException: The operation timed out 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.platform.OSNetworkSystem.connectSocketImpl(Native Method) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.platform.OSNetworkSystem.connect(OSNetworkSystem.java:125) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:227) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.net.PlainSocketImpl.connect(PlainSocketImpl.java:521) 
04-19 12:28:19.865: WARN/System.err(2962): at java.net.Socket.connect(Socket.java:1019) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnection.<init>(HttpConnection.java:67) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager$ConnectionPool.getHttpConnection(HttpConnectionManager.java:151) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpConnectionManager.getConnection(HttpConnectionManager.java:73) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getHTTPConnection(HttpURLConnection.java:826) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.connect(HttpURLConnection.java:812) 
04-19 12:28:19.865: WARN/System.err(2962): at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1054) 
04-19 12:28:19.865: WARN/System.err(2962): at java.net.URL.openStream(URL.java:674) 
+1

est l'IP de l'hébergeur: http://192.168.2.180:8080/ est-il disponible sur un réseau public? – Samuh

+0

ceci mon comp IP! Franchement, je ne sais pas, comment puis-je vérifier cela? – rantravee

+0

Oui c'est. D'un autre comp sur le même réseau j'ai tapé 192.168.2.180:8080 dans un navigateur, et la page d'accueil de tomcat a été chargée – rantravee

Répondre

0

Comme Samuh dit, vérifiez que vous avez accès à l'adresse IP privée. Vous devriez également attraper correctement cette exception de délai d'expiration, en affichant une boîte de dialogue pour l'utilisateur ou un Toast.

Rappelez-vous que si vous êtes prêt à utiliser 3g dans votre téléphone pour vous demande, je vous recommande d'augmenter les valeurs de délai d'attente en utilisant quelque chose comme:

setConnectTimeout(CONNECT_TIMEOUT); 
setReadTimeout(READ_TIMEOUT); 
1

Le problème vient du port 8080, essayez avec un défaut URL comme http://www.google.com. (port par défaut = 80) Cela fonctionnera.

Questions connexes