Comment créer un serveur HTTP sous Android?

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?

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 implication “virale”.

NanoHttpd a migré vers https://github.com/NanoHttpd/nanohttpd . peut mettre à jour le lien.

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

La seule partie plus délicate, vous avez besoin d’un thread séparé attendre sur le ServerSocket, service des sous-sockets qui proviennent de sa méthode d’ accept . Vous devez également arrêter et reprendre ce thread si nécessaire. L’approche la plus simple semble tuer le thread en attente en fermant le 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 assez élégamment liés aux méthodes du cycle de vie de l’activité. En outre, si le serveur a plusieurs utilisateurs, il peut être intéressant 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 devez indiquer à l’utilisateur sur quelle IP le serveur écoute, utilisez NetworkInterface .getNetworkInterfaces (), cette question peut vous donner des astuces supplémentaires.

Enfin, il existe peut-être le serveur Android minimal complet qui est très court, simple et peut-être plus facile à comprendre que les applications d’utilisateur final finales, recommandé 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 avec Android.

Vous pouvez essayer l’ édition Restlet pour Android:

La source peut être téléchargée à partir du site Web de Restlet:

Si vous utilisez kotlin, considérez ces bibliothèques. Il est construit pour le langage kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor

AndroidHttpServer est très petit, mais la fonctionnalité est également réduite.

Ktor est une très belle bibliothèque et son utilisation est simple