Come creare un server HTTP su Android? [chiuso]


116

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?


se tutto quello che vuoi è un server web, puoi dare un'occhiata a questo tutorial: devlper.com/2010/12/… e al suo esempio: code.google.com/p/krvarma-android-samples/source/browse/… . sono entrambi molto vecchi, ma dopo alcune modifiche funzionerà ancora bene.
sviluppatore Android

Risposte:


131

Considera questo: https://github.com/NanoHttpd/nanohttpd . Molto piccolo, scritto in Java. L'ho usato senza problemi.


Sorprendente. Probabilmente ha risparmiato un mese di lavoro. Puoi usarlo in un prodotto commerciale?
Ivan G.

Dovresti leggere informazioni sulla licenza BSD modificata. Se consente o meno l'utilizzo del codice nel prodotto commerciale.
damluar

2
Non riesco a visualizzare le immagini nella mia pagina html. Quale directory dovrebbe essere usata nell'html per mostrare le immagini? Grazie.
Shane Oliver,

il percorso delle immagini è relativo al rigarging della pagina html. non è un problema di server http, è pessimo html ..
damluar

Posso servire un file che è attualmente in fase di aggiunta a homeDir. Ad esempio, sto copiando un file denominato f1 in homeDir (utilizzando javacode). Ora la copia del file è in corso e se qualcuno invia una richiesta per il file f1 Il server può elaborare la richiesta?
Ashwin N Bhanushali

23

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


1
Dove posso trovare un tutorial / esempio su come usarlo? ad esempio per servire un file che si trova sul dispositivo, in modo che altri possano scaricarlo (o eseguire lo streaming da esso)?
sviluppatore Android

9

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.


6

Un altro server che puoi provare http://tjws.sf.net , in realtà fornisce già una versione abilitata per Android.


1
Questo è grasso per gli standard Android (100kb). Buono se desideri un server serio in java piuttosto che un semplice file serving o un'interfaccia di configurazione / debug / stato remota nella tua app.
ahcox


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.