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?
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?
Réponses:
Considérez celui-ci: https://github.com/NanoHttpd/nanohttpd . Très petit, écrit en Java. Je l'ai utilisé sans aucun problème.
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».
Cela peut être fait en utilisant ServerSocket , comme sur JavaSE. Cette classe est disponible sur Android. android.permission.INTERNET
est 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 accept
mé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.
Un autre serveur que vous pouvez essayer http://tjws.sf.net , en fait, il fournit déjà une version compatible Android.
Vous pouvez essayer l' édition Restlet pour Android:
La source peut être téléchargée depuis le site Web de Restlet :
Si vous utilisez kotlin, considérez ces bibliothèques. Il est conçu pour le langage kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer est très petit, mais la fonctionnalité l'est également moins.
Ktor est une très belle bibliothèque, et l'utilisation est simple aussi