Je souhaite créer un serveur HTTP simple dans Android pour servir du contenu à un client.
Des conseils sur la façon de construire le serveur ou d’utiliser une bibliothèque existante?
Considérez ceci: 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, construit par les 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. Ce cours est disponible sur Android. Android.permission.INTERNET
est requis.
La seule partie plus délicate, vous avez besoin d’une attente de thread distincte sur ServerSocket, permettant de traiter les sous-sockets provenant de sa méthode accept
. Vous devez également arrêter et reprendre ce fil au besoin. L'approche la plus simple semble tuer le thread en attente en fermant ServerSocket. Si vous n'avez besoin que d'un serveur alors que votre activité est au top, le démarrage et l'arrêt du thread ServerSocket peuvent être liés de manière assez élégante aux méthodes de cycle de vie de l'activité. De même, si le serveur compte plusieurs utilisateurs, il peut être judicieux de traiter les demandes dans les threads branchés. S'il n'y a qu'un seul utilisateur, cela peut ne pas être nécessaire.
Si vous devez indiquer à l'utilisateur sur quelle adresse IP le serveur est à l'écoute, utilisez NetworkInterface . GetNetworkInterfaces (), cette question peut indiquer des astuces supplémentaires.
Enfin, ici il existe peut-être le serveur minimal Android) complet, très court, simple et plus facile à comprendre que les applications utilisateur final finies, recommandé dans d'autres réponses.
Un autre serveur que vous pouvez essayer http://tjws.sf.net , en fait, il fournit déjà Android activée.
NanoHttpd a été déplacé vers https://github.com/NanoHttpd/nanohttpd . peut mettre à jour le lien.
Vous pouvez essayer Restlet edition pour Android:
La source peut être téléchargée à partir de Restlet website :
Si vous utilisez kotlin, considérez ces bibliothèques. C'est construit pour le langage kotlin. https://github.com/weeChanc/AndroidHttpServerhttps://github.com/ktorio/ktor
AndroidHttpServer est très petit, mais la fonctionnalité est moins.
Ktor est une très belle bibliothèque, et son utilisation est simple