2011-09-01 21 views
7

tengo dos aplicaciones de Android en misma LAN proporcionados por WIFI:cómo implementar un servidor HTTP en android

  1. aplicación (A) que se abren un socket de escucha en el puerto 8033
  2. Aplicación (B) que utilizar HttpClient para acceder (A) en el puerto 8033

¿Cómo hacer posible que (A) pueda hacer solicitudes POST y GET en (B)?
¿A qué se parece la URL utilizada por (A) para acceder (B)?

Gracias a todos.

+0

@Jonas Su pregunta no es si un cliente puede hablar con un servidor, sino si HttpClient puede comunicarse con un servidor que su otra aplicación está escuchando. –

Respuesta

12

Puede confundir dos niveles diferentes de comunicación de red.

Nivel 4: conexión TCP entre dos zócalos.
Un tubo lógica entre al lado (? Puede ser única (dos procesos) o dos equipos diferentes) sólo los datos de manipulación de la conexión son mango a este nivel

Nivel 7: Navegador/Servidor de aplicaciones utilizado comunicación particular "lenguaje" para intercambiar datos de alto nivel (archivos, imágenes, audio ...) y se maneja en este nivel.

Su pregunta se trata de abrir un Socket de escucha (nivel 4) y un cliente que hable con un protocolo HTTP (nivel 7).

Así que no se puede llenar el espacio de escucha del zócalo hueco para manejar el protocolo HTTP
Puede ser que la implementación de un servidor web java pueda ser útil.

+0

Bien, gracias. Pero ¿dónde puedo encontrar ejemplos de trabajo de Android y TJWS? Miré la URL pero soy un completo novato en Java, así que si obtengo algún código, será muy fácil para mí entenderlo. – KhanZeeshan

+0

Tiny Java Web Server implementa el contenedor de servlets estándar definido por JEE (Java Enterprise Edition): mis consejos es 1) busca "cómo implementar una biblioteca/jar de terceros en el proyecto de Android" 2) aprende un poco más de Java Standard Edition (el clásico) y Enterprise Edition (utilizado normalmente para Java para el servidor de aplicaciones) vea como ejemplo http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/Servlets.html .. vea como ejemplo http://www.apl.jhu.edu/~hall/java/Servlet-Tutorial/Servlet-Tutorial-First-Servlets.html –

+0

Encontré este enlace "http://www.androiddevblog.net/android/a-bare- minimum-web-server-for-android-platform "que está haciendo lo que creo exactamente lo que quiero. Estaras de acuerdo? – KhanZeeshan

1

Escuchar en un puerto y aceptar conexiones de socket no es suficiente para devolver datos a HttpClient. Los zócalos en efecto proporcionan una tubería física, pero no saben nada sobre el formato de los datos que fluyen a lo largo de esa tubería. Si está configurado para usar HttpClient, necesitará que su aplicación de servidor comprenda el protocolo HTTP (o al menos un subconjunto muy básico de él).

Si todo lo que necesita es que dos procesos se comuniquen de alguna manera, es mejor que su aplicación de servidor sea un servicio y luego su aplicación cliente interrogue a este servicio para obtener los datos requeridos.

+0

¿Cómo puedo hacer que el socket del servidor entienda el protocolo HTTP y lo siento, me olvidé de escribir El cliente estará en otro dispositivo android y el servidor en el otro. – KhanZeeshan

+0

"conducto físico" puede ser un punto de vista restrictivo ... en un solo dispositivo puede tener un socket de escucha y un cliente. sin ningún enlace físico –

+0

He encontrado muchos ejemplos de HTTPClient que consulta el servidor web y la comunicación normal del Servidor y Cliente Socket en java, pero no pude encontrar ningún ejemplo en el ejemplo del socket del Servidor que implementa Protocolos HTTP y tal. – KhanZeeshan

1

Estaba buscando la misma solución y encontré NanoHTTPD, una clase de servidor de manejo de solicitudes HTTP extremadamente simple. Puede encontrar las muestras de origen y muy fáciles de entender en https://github.com/NanoHttpd

Cuestiones relacionadas