Eu gostaria de criar um servidor HTTP simples no Android para servir algum conteúdo a um cliente.
Algum conselho sobre como construir o servidor ou usar qualquer biblioteca existente?
Eu gostaria de criar um servidor HTTP simples no Android para servir algum conteúdo a um cliente.
Algum conselho sobre como construir o servidor ou usar qualquer biblioteca existente?
Respostas:
Considere este: https://github.com/NanoHttpd/nanohttpd . Muito pequeno, escrito em Java. Usei sem nenhum problema.
O NanoHttpd funciona perfeitamente no Android - temos código em produção, nas mãos dos usuários, que é construído sobre ele.
A licença permite absolutamente o uso comercial do NanoHttpd, sem quaisquer implicações "virais".
Isso pode ser feito usando ServerSocket , o mesmo que em JavaSE. Esta aula está disponível no Android. android.permission.INTERNET
É necessário.
A única parte mais complicada é que você precisa de uma espera de thread separada no ServerSocket, atendendo a sub-soquetes que vêm de seu accept
método. Você também precisa parar e retomar este tópico conforme necessário. A abordagem mais simples parece matar o thread de espera fechando o ServerSocket. Se você só precisa de um servidor enquanto sua atividade está no topo, iniciar e parar o encadeamento ServerSocket pode ser elegantemente vinculado aos métodos de ciclo de vida da atividade. Além disso, se o servidor tiver vários usuários, pode ser bom atender solicitações de threads bifurcadas. Se houver apenas um usuário, isso pode não ser necessário.
Se você precisar informar ao usuário sobre os quais IP é a escuta do servidor, utilize NetworkInterface .getNetworkInterfaces (), esta pergunta pode dizer truques extras.
Finalmente, aqui existe possivelmente o servidor Android mínimo completo que é muito curto, simples e pode ser mais fácil de entender do que os aplicativos de usuário final finalizados, recomendados em outras respostas.
Outro servidor que você pode tentar http://tjws.sf.net , na verdade já fornece a versão habilitada para Android.
Você pode experimentar a edição Restlet para Android:
A fonte pode ser baixada do site do Restlet :
Se você estiver usando o kotlin, considere estas bibliotecas. É construído para a linguagem kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer é muito pequeno, mas o recurso também é menor.
Ktor é uma biblioteca muito boa e o uso é simples também