Чтение текстового файла с сервера на Android - PullRequest
36 голосов
/ 27 мая 2010

У меня есть текстовый файл на моем сервере. Я хочу открыть текстовый файл из моего приложения для Android, а затем отобразить текст в TextView. Я не могу найти примеры того, как установить базовое соединение с сервером и передать данные в строку.

Буду признателен за любую помощь, которую вы можете оказать.

Ответы [ 3 ]

57 голосов
/ 27 мая 2010

Попробуйте следующее:

try {
    // Create a URL for the desired page
    URL url = new URL("mysite.com/thefile.txt");

    // Read all the text returned by the server
    BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream()));
    String str;
    while ((str = in.readLine()) != null) {
        // str is one line of text; readLine() strips the newline character(s)
    }
    in.close();
} catch (MalformedURLException e) {
} catch (IOException e) {
}

(взято из Пример депо: получение текста с URL )

Должно хорошо работать на Android.

14 голосов
/ 27 мая 2010

Хотя URL.openStream будет работать, вам лучше использовать библиотеку Apache HttpClient, которая поставляется с Android для HTTP. Среди прочих причин вы можете использовать кодировку контента (gzip) с ним, и это сделает передачу текстовых файлов намного меньше (лучшее время автономной работы, меньшее использование сети) и быстрее.

Существуют различные способы использования HttpClient, и существует несколько помощников, чтобы упаковать вещи и упростить их. См. Этот пост для получения более подробной информации об этом: Android-проект, использующий httpclient -> http.client (apache), метод post / get (и обратите внимание, что включенный в него HttpHelper использует gzip, хотя не все используют) .

Кроме того, независимо от того, какой метод вы используете для получения данных по HTTP, вы можете использовать AysncTask (или Handler), чтобы не блокировать поток пользовательского интерфейса при выполнении сетевого вызова.

И обратите внимание, что вы НИКОГДА не должны просто использовать URL.openStream (без установки какой-либо конфигурации, например, тайм-аутов), хотя многие примеры показывают это, потому что он будет блокироваться на неопределенный срок, если сервер недоступен (по умолчанию он не имеет тайм-аут): URL.openStream () может оставить вас висеть .

5 голосов
/ 31 октября 2012

Не забудьте добавить интернет-разрешения в манифест при получении сетевых ресурсов: (добавить в манифест).

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