Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 421
#1

Загрузка файла с сервера - Android

13.12.2013, 22:21. Просмотров 1706. Ответов 4
Метки нет (Все метки)

Файл загружается но видимо неправильно. Так как этот mp3-файл не воспроизводится. Предполагаю что нада поменять User-agent, но какой ?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
URL myURL = new URL("https://translate.google.ru/translate_tts?ie=UTF-8&q="+b + "&tl=ru&total=1&idx=0&textlen=44&prev=input");
    URLConnection hpCon = myURL.openConnection(); \\ соединяемсь
    hpCon.setRequestProperty("User-Agent", "Mozilla/5.0"); \\настройка параметров 
    
    InputStream dataStream = hpCon.getInputStream(); \\ подсоединяю поток для чтения
    InputStreamReader isr = new InputStreamReader(dataStream, "UTF-8"); \\ я так понял буферезированый поток
 
        StringBuffer data = new StringBuffer(); \\ сюда записываю данные с потока
    int c;
    while ((c = isr.read()) != -1)
    {
        
           data.append((char) c);
    }
  
 
    resultString = new String (data.toString()); \\ конвертирую данные в строку => возможно здесь что-то не так
    
   \\ далее идет запись содержимого строки у файл на флешке
    
        File sdPath = Environment.getExternalStorageDirectory();
        // добавляем свой каталог к пути
        sdPath = new File(sdPath.getAbsolutePath() + "/" + DIR_SD);
        // создаем каталог
        sdPath.mkdirs();
        // формируем объект File, который содержит путь к файлу
        File sdFile = new File(sdPath, FILENAME_SD);
        try {
          // открываем поток для записи
          BufferedWriter bw = new BufferedWriter(new FileWriter(sdFile));
          // пишем данные
          bw.write(resultString);
          // закрываем поток
          bw.close();
            } 
       catch (IOException e) {
          e.printStackTrace();
        }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.12.2013, 22:21     Загрузка файла с сервера
Посмотрите здесь:

Загрузка файла в файловую систему эмклятора Android
Android Загрузка файла из сети, и его выполнение
Получение JSON с сервера Android
Android Реализация клиент сервера
Загрузка 3d объекта из файла Android
Загрузка Xml с сервера и отображение данных в приложении Android
Android Загрузка данных с удалённого сервера
Получение текста с сервера Android
Android Не приходит сообщение от сервера
Загрузка файла по URL Android
Android Пинг TCP сервера
Android Дождаться ответа от сервера

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
13.12.2013, 23:50     Загрузка файла с сервера #2
МОжет поможет)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    try {
        URL url = new URL("URL_MP3"]);
        URLConnection conexion = url.openConnection();
        conexion.connect();
 
        InputStream input = new BufferedInputStream(url.openStream());
        OutputStream output = new FileOutputStream("ПУТЬ_ДО_МЕСТА_НА_ФЛЕШКЕ(Environment.getExternalStorageDirectoyr())/nameFile.mp3");
 
        byte data[] = new byte[1024];
 
        while ((count = input.read(data)) != -1) {
            output.write(data, 0, count);
        }
 
        output.flush();
        output.close();
        input.close();
    } catch (Exception e) {}
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 421
14.12.2013, 11:12  [ТС]     Загрузка файла с сервера #3
Цитата Сообщение от GukZiLLA Посмотреть сообщение
МОжет поможет)

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
    try {
        URL url = new URL("URL_MP3"]);
        URLConnection conexion = url.openConnection();
        conexion.connect();
 
        InputStream input = new BufferedInputStream(url.openStream());
        OutputStream output = new FileOutputStream("ПУТЬ_ДО_МЕСТА_НА_ФЛЕШКЕ(Environment.getExternalStorageDirectoyr())/nameFile.mp3");
 
        byte data[] = new byte[1024];
 
        while ((count = input.read(data)) != -1) {
            output.write(data, 0, count);
        }
 
        output.flush();
        output.close();
        input.close();
    } catch (Exception e) {}
Попробовал. Но у меня нет класа BufferedInputStream. Получил поток через метод getInputStream. Все остальное оставил так как у вашем примере. Проблема осталась. Как в моём так и вашем примере запись идёт только неправильно. Записываются лишние данные. Создавал java приложение на компе, там поначалу тоже происходила загрузка но неправильная. Все решилось когда добавил setRequestProperty("User-Agent", "Translator"). Использование других агентов давало неправильную загрузку. Думаю, что и в приложении на андроид все зависит от агента, но какой Нада выбрать?
GukZiLLA
35 / 35 / 2
Регистрация: 30.11.2013
Сообщений: 102
14.12.2013, 13:35     Загрузка файла с сервера #4
Цитата Сообщение от ASDFD12 Посмотреть сообщение
Но у меня нет класа BufferedInputStream.
Как так нет? )
Он был добавлен еще в api level 1 http://developer.android.com/referen...putStream.html
Переустановите ide)
ASDFD12
33 / 33 / 5
Регистрация: 15.09.2012
Сообщений: 421
14.12.2013, 14:11  [ТС]     Загрузка файла с сервера #5
Цитата Сообщение от GukZiLLA Посмотреть сообщение
Как так нет? )
Он был добавлен еще в api level 1 http://developer.android.com/referen...putStream.html
Переустановите ide)
Все СУПЕР. Спасибо. Нашел этот BufferedInputStream, подключил и все заработало. Странно, что через getInputStream не работало. Тема закрыта.
Yandex
Объявления
14.12.2013, 14:11     Загрузка файла с сервера
Ответ Создать тему
Опции темы

Текущее время: 07:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru