2010-04-19 3 views
0

Вот проблема, я столкнулся: Я пытаюсь загрузить файл с сервера Tomcat, используя следующий snipet кодаПроблема при загрузке файла

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 
} 

Вышеприведенные прекрасно работает, когда я запускаю его на эмулятор, но когда я пытаюсь проверить это на моем устройстве он не делает ничего, и ~ 50 сек позже он выдает «сокет тайм-аут» исключение на линии

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

Что это происходит и как я могу почини это ?

вот 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

является хостом IP: http://192.168.2.180:8080/ доступен в общедоступной сети? – Samuh

+0

это мой комп IP! Честно говоря, я не знаю, как я могу это проверить? – rantravee

+0

Да, это так. С другого компилятора в той же сети я набрал 192.168.2.180:8080 в браузере, и была загружена домашняя страница tomcat – rantravee

ответ

0

Как сказал Samuh, убедитесь, что у вас есть доступ к частному IP. Также вы должны правильно поймать это исключение таймаута, показывая диалог пользователю или тосту.

Помните, что если вы готовы использовать 3g в телефоне для вашего приложения, я рекомендовал бы увеличить значения тайм-аута, используя что-то вроде:

setConnectTimeout(CONNECT_TIMEOUT); 
setReadTimeout(READ_TIMEOUT); 
1

Проблема исходит из порта 8080, попробуйте по умолчанию url like http://www.google.com. (порт по умолчанию = 80) Он будет работать.

Смежные вопросы