Comment créer un serveur HTTP sous Android? [fermé]


116

Je voudrais créer un serveur HTTP simple sous Android pour servir du contenu à un client.

Des conseils sur la façon de construire le serveur ou d'utiliser une bibliothèque existante?


si tout ce que vous voulez est un serveur Web, vous pouvez consulter ce tutoriel: devlper.com/2010/12 / ... et son exemple: code.google.com/p/krvarma-android-samples/source/browse/… . ils sont tous les deux très vieux, mais après quelques ajustements, cela fonctionnera toujours bien.
développeur android

Réponses:


131

Considérez celui-ci: https://github.com/NanoHttpd/nanohttpd . Très petit, écrit en Java. Je l'ai utilisé sans aucun problème.


Incroyable. Probablement économisé un mois de travail. Pouvez-vous l'utiliser dans un produit commercial?
Ivan G.

Vous devriez lire à propos de la licence BSD modifiée. Si cela permet d'utiliser du code dans un produit commercial ou non.
damluar

2
Je n'arrive pas à faire apparaître les images dans ma page html. Quel répertoire doit être utilisé dans le html pour les images à afficher? Merci.
Shane Oliver

le chemin vers les images est relatif par rapport à la page html. ce n'est pas un problème de serveur http, c'est mauvais html ..
damluar

Puis-je servir un fichier qui est actuellement ajouté au homeDir. Par exemple, je copie un fichier nommé f1 dans homeDir (en utilisant javacode). Maintenant, la copie du fichier est en cours et si quelqu'un envoie une demande pour le fichier f1 Le serveur peut-il traiter la demande?
Ashwin N Bhanushali

23

NanoHttpd fonctionne comme un charme sur Android - nous avons du code en production, entre les mains des utilisateurs, qui est construit dessus.

La licence autorise absolument l'utilisation commerciale de NanoHttpd, sans aucune implication «virale».


1
Où puis-je trouver un tutoriel / un exemple de son utilisation? par exemple pour servir un fichier situé sur l'appareil, afin que d'autres puissent le télécharger (ou le diffuser)?
développeur android

9

Cela peut être fait en utilisant ServerSocket , comme sur JavaSE. Cette classe est disponible sur Android. android.permission.INTERNETest requis.

La seule partie la plus délicate, vous avez besoin d'une attente de thread distinct sur le ServerSocket, qui gère les sous-sockets qui proviennent de sa acceptméthode. Vous devez également arrêter et reprendre ce fil si nécessaire. L'approche la plus simple semble tuer le thread en attente en fermant le ServerSocket. Si vous n'avez besoin d'un serveur que pendant que votre activité est au sommet, le démarrage et l'arrêt du thread ServerSocket peuvent être assez élégamment liés aux méthodes du cycle de vie de l'activité. De plus, si le serveur a plusieurs utilisateurs, il peut être bon de traiter les demandes dans les threads fourchus. S'il n'y a qu'un seul utilisateur, cela peut ne pas être nécessaire.

Si vous avez besoin de dire à l'utilisateur sur quelle IP est le serveur à l'écoute, utilisez NetworkInterface .getNetworkInterfaces (), cette question peut révéler des astuces supplémentaires.

Enfin, il y a peut-être ici le serveur Android minimal complet qui est très court, simple et peut être plus facile à comprendre que les applications utilisateur finales, recommandées dans d'autres réponses.


6

Un autre serveur que vous pouvez essayer http://tjws.sf.net , en fait, il fournit déjà une version compatible Android.


1
C'est gros selon les normes Android (100 ko). Bon si vous voulez un serveur sérieux en java plutôt qu'un simple service de fichiers ou une interface de configuration / débogage / état à distance dans votre application.
ahcox


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.