Vorrei creare un semplice server HTTP in Android per servire alcuni contenuti a un client.
Qualche consiglio su come costruire il server o utilizzare una libreria esistente?
Vorrei creare un semplice server HTTP in Android per servire alcuni contenuti a un client.
Qualche consiglio su come costruire il server o utilizzare una libreria esistente?
Risposte:
Considera questo: https://github.com/NanoHttpd/nanohttpd . Molto piccolo, scritto in Java. L'ho usato senza problemi.
NanoHttpd funziona come un incantesimo su Android: abbiamo codice in produzione, nelle mani degli utenti, che è costruito su di esso.
La licenza consente assolutamente l'uso commerciale di NanoHttpd, senza alcuna implicazione "virale".
Questo può essere fatto utilizzando ServerSocket , come in JavaSE. Questa classe è disponibile su Android. android.permission.INTERNETè obbligatorio.
L'unica parte più complicata, è necessario che un thread separato attenda sul ServerSocket, servendo i sub-socket che provengono dal suo acceptmetodo. È inoltre necessario interrompere e riprendere questo thread secondo necessità. L'approccio più semplice sembra uccidere il thread in attesa chiudendo ServerSocket. Se hai bisogno di un server solo mentre la tua attività è in alto, l'avvio e l'arresto del thread ServerSocket possono essere collegati in modo piuttosto elegante ai metodi del ciclo di vita dell'attività. Inoltre, se il server ha più utenti, potrebbe essere utile servire le richieste nei thread biforcati. Se è presente un solo utente, potrebbe non essere necessario.
Se hai bisogno di dire all'utente su quale IP è il server in ascolto, usa NetworkInterface .getNetworkInterfaces (), questa domanda potrebbe rivelare trucchi extra.
Infine, qui c'è forse il server Android minimale completo che è molto breve, semplice e potrebbe essere più facile da capire rispetto alle applicazioni per utenti finali finite, consigliato in altre risposte.
Un altro server che puoi provare http://tjws.sf.net , in realtà fornisce già una versione abilitata per Android.
Puoi provare l'edizione Restlet per Android:
La fonte può essere scaricata dal sito web di Restlet :
Se stai usando kotlin, considera queste librerie. È costruito per il linguaggio kotlin. https://github.com/weeChanc/AndroidHttpServer https://github.com/ktorio/ktor
AndroidHttpServer è molto piccolo, ma anche la funzionalità lo è.
Ktor è una libreria molto carina e anche l'uso è semplice