Question Lecture de fichier texte à partir du serveur sur Android


J'ai un fichier texte sur mon serveur. Je veux ouvrir le fichier texte de mon application Android, puis afficher le texte dans un TextView. Je ne trouve aucun exemple de la façon de faire une connexion de base à un serveur et de transmettre les données dans une chaîne.

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


35
2018-05-27 14:54


origine


Réponses:


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

(pris à partir de Exampledepot: obtenir du texte à partir d'une URL)

Devrait bien fonctionner sur Android.


55
2018-05-27 15:12



Bien que URL.openStream fonctionne, vous devriez utiliser la bibliothèque Apache HttpClient fournie avec Android pour HTTP. Entre autres raisons, vous pouvez utiliser l’encodage de contenu (gzip), ce qui rendra les transferts de fichiers texte beaucoup plus petits (meilleure autonomie de la batterie, moins d’utilisation du réseau) et plus rapides.

Il y a plusieurs façons d'utiliser HttpClient, et plusieurs aides existent pour envelopper et faciliter les choses. Voir ce post 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 ici utilise gzip, mais pas tous).

De plus, quelle que soit la méthode utilisée pour récupérer les données via HTTP, vous souhaiterez utiliser AysncTask (ou Handler) pour vous assurer de ne pas bloquer le thread d'interface utilisateur lors de l'appel réseau.

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


14
2018-05-27 16:33



N'oubliez pas d'ajouter des autorisations Internet au manifeste lorsque vous utilisez des ressources réseau: (ajoutez le manifeste).


5
2017-10-31 09:09