Проблема при загрузке файла - PullRequest
0 голосов
/ 19 апреля 2010

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

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 секунд выдает исключение «тайм-аут сокета» в строке 1004 *

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

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

вот трассировка стека

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)

Ответы [ 2 ]

1 голос
/ 27 мая 2011

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

0 голосов
/ 19 апреля 2010

Как сказал Самух, проверьте, что у вас есть доступ к приватному ip. Также вы должны правильно перехватить это исключение тайм-аута, показывая диалог пользователю или Toast.

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

setConnectTimeout(CONNECT_TIMEOUT);
setReadTimeout(READ_TIMEOUT);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...