web-dev-qa-db-fra.com

Comment créer un serveur HTTP sous Android?

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?

109
biquillo

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

122
damluar

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".

21
Paul Hawke

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.

9
h22

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

6
Dmitriy R

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

5
Aaron

Vous pouvez essayer Restlet edition pour Android:

La source peut être téléchargée à partir de Restlet website :

4
Bharath

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

1
steven chan