web-dev-qa-db-fra.com

Lecture du fichier texte depuis le serveur sur Android

J'ai un fichier texte sur mon serveur. Je souhaite ouvrir le fichier texte à partir de mon Android App, puis afficher le texte dans une TextView. Je ne trouve aucun exemple de connexion de base à un serveur et de chargement des données dans un Chaîne.

Toute aide que vous pourriez fournir serait appréciée.

36
Chris

Essayez ce qui suit:

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) {
}

(extrait de Exampledepot: Obtention de texte à partir d'une URL )

Devrait bien fonctionner sur Android.

57
aioobe

Bien que URL.openStream fonctionne, vous feriez mieux d'utiliser la bibliothèque Apache HttpClient fournie avec Android pour HTTP. Entre autres raisons, vous pouvez utiliser le codage de contenu (gzip) avec lui, et que rendra les transferts de fichiers texte beaucoup plus petits (meilleure autonomie de la batterie, moins d’utilisation nette) et plus rapides.

Il existe différentes façons d'utiliser HttpClient, et plusieurs aides existent pour envelopper les choses et le rendre plus facile. Voir cet article pour plus de détails à ce sujet: projet Android utilisant httpclient -> http.client (Apache), méthode post/get (et notez que le HttpHelper que j'ai inclus utilise gzip, mais pas tous ).

En outre, quelle que soit la méthode que vous utilisez pour récupérer les données via HTTP, vous voudrez utiliser AysncTask (ou gestionnaire) pour vous assurer de ne pas bloquer le thread d'interface utilisateur lors de l'appel réseau.

Et notez que vous ne devriez presque JAMAIS utiliser simplement URL.openStream (sans définir de configuration, comme les délais d'attente), bien que de nombreux exemples montrent que, car il se bloquera indéfiniment si vous le serveur n'est pas disponible (par défaut, il n'a pas de délai d'expiration): RL.openStream () pourrait vous laisser accrocher .

14
Charlie Collins

N'oubliez pas d'ajouter des autorisations Internet au manifeste lorsque vous prenez des ressources nettes: (ajoutez le manifeste).

5
baron_bartek