¿Cómo crear un servidor HTTP en Android?

Me gustaría crear un servidor HTTP simple en Android para servir algún contenido a un cliente.

¿Algún consejo sobre cómo construir el servidor o usar cualquier biblioteca existente?

Considere este: https://github.com/NanoHttpd/nanohttpd . Muy pequeño, escrito en Java. Lo usé sin ningún problema.

NanoHttpd funciona como un encanto en Android: tenemos código en producción, en manos de los usuarios, está basado en él.

La licencia permite absolutamente el uso comercial de NanoHttpd, sin ninguna implicación “viral”.

NanoHttpd se ha movido a https://github.com/NanoHttpd/nanohttpd . puede actualizar el enlace.

Esto se puede hacer usando ServerSocket , lo mismo que en JavaSE. Esta clase está disponible en Android. android.permission.INTERNET es obligatorio.

La única parte más complicada es que necesita una espera de subprocesos independiente en ServerSocket, que atiende sub-sockets que provienen de su método de accept . También debe detener y reanudar este hilo según sea necesario. El enfoque más simple parece matar el hilo de espera al cerrar ServerSocket. Si solo necesita un servidor mientras su actividad está en la parte superior, iniciar y detener el hilo de ServerSocket puede relacionarse elegantemente con los métodos del ciclo de vida de la actividad. Además, si el servidor tiene múltiples usuarios, puede ser útil atender las solicitudes en los hilos bifurcados. Si solo hay un usuario, esto puede no ser necesario.

Si necesita decirle al usuario en qué IP está escuchando el servidor, use NetworkInterface .getNetworkInterfaces (), esta pregunta puede revelar trucos adicionales.

Finalmente, aquí está posiblemente el servidor Android mínimo completo que es muy corto, simple y puede ser más fácil de entender que las aplicaciones de usuario final, lo que se recomienda en otras respuestas.

Otro servidor puede probar http://tjws.sf.net , en realidad ya proporciona la versión habilitada para Android.

Puedes probar la edición de Restlet para Android:

La fuente se puede descargar desde el sitio web de Restlet:

Si está usando kotlin, considere esta biblioteca. Es construir para el lenguaje kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor

AndroidHttpServer es muy pequeño, pero la característica es menos.

Ktor es una biblioteca muy agradable, y el uso es simple también