2011-09-01 21 views
7

Ho due applicazioni Android su stessa rete LAN forniti da WIFI:Come implementare un server HTTP su Android

  1. App (A) che si aprono un socket in ascolto sulla porta 8033
  2. App (B), che utilizzare HttpClient per accedere (A) alla porta 8033

Come rendere possibile che (A) faccia richieste POST e GET su (B)?
Qual è l'URL utilizzato da (A) per accedere a (B)?

Grazie a tutti.

+0

@Jonas La sua domanda non è se un client può parlare con un server ma piuttosto se HttpClient può comunicare con un socket del server che la sua altra app sta ascoltando. –

risposta

12

È possibile confondere due diversi livelli di comunicazione di rete.

Livello 4: connessione TCP tra due socket.
Un tubo logico tra di lato (? Può essere singola (due di processo) o due computer diversi) solo i dati di gestione di connessione sono maniglia a questo livello

Livello 7: Browser/Application Server utilizzato comunicazione particolare "linguaggio" per scambiare dati di alto livello (file, immagini, audio ..) e viene gestito a questo livello.

La domanda sta per aprire un socket di ascolto (livello 4) e un client che parla con esso con un protocollo HTTP (livello 7).

In questo modo non si riesce a riempire il lato di ascolto della presa di intercettazione per gestire il protocollo HTTP
Potrebbe essere utile l'implementazione di un server Web java.

+0

Ok, grazie. Ma dove posso trovare un esempio funzionante di Android e TJWS. Ho guardato l'URL ma sono un noob completo in java, quindi se ottengo del codice, sarà molto facile per me capirlo. – KhanZeeshan

+0

Tiny Java Web Server implementa il contenitore di servlet standard definito da JEE (java Enterprise Edition): Quindi i miei consigli sono 1) cerca "come implementare libreria/jar di terze parti nel progetto Android" 2) imparare un po 'di java Standard Edition (il classico) ed Enterprise Edition (usato tipicamente per java per application server) vedere come esempio http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html .. vedere come esempio http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-First-Servlets.html –

+0

Mi sono imbattuto in questo link "http://www.androiddevblog.net/android/a-bare- minimum-web-server-per-android-platform "che sta facendo quello che penso esattamente quello che voglio. Sarai d'accordo? – KhanZeeshan

1

L'ascolto su una porta e l'accettazione di connessioni socket non è sufficiente per restituire i dati a HttpClient. I socket in effetti forniscono una pipe fisica ma non sanno nulla del formato dei dati che scorre lungo quella pipe. Se si imposta l'utilizzo di HttpClient, è necessario che l'applicazione server comprenda il protocollo HTTP (o almeno un sottoinsieme di base).

Se tutto ciò che serve è comunicare in due modi con due processi, è meglio che l'app server sia un servizio e quindi l'app client interroga questo servizio per i dati richiesti.

+0

Come posso fare in modo che il socket del server comprenda il protocollo HTTP e mi spiace di aver dimenticato di scrivere che il client si troverà su un altro dispositivo Android e il server su quello diverso. – KhanZeeshan

+0

"pipe fisica" può essere un punto di vista restrittivo ... su un singolo dispositivo si può avere un socket di ascolto e un client. senza alcun collegamento fisico –

+0

Ho trovato molti esempi di HTTPClient che interrogano webserver e normale comunicazione Server & Client Socket in java ma non sono riuscito a trovare alcun esempio sull'esempio di socket Server che implementa protocolli HTTP e così via. – KhanZeeshan

1

Stavo cercando la stessa soluzione e ho trovato NanoHTTPD, una richiesta HTTP estremamente semplice che gestisce la classe del server. È possibile trovare i campioni di origine e di facile comprensione a https://github.com/NanoHttpd

Problemi correlati