2011-04-10 29 views
6

tengo una misión donde necesito para crear un servidor proxy, que manipular algunas de las peticiones/respuestas que recibe, implementar el almacenamiento en caché, etc.para una solicitud HTTP

Para empezar, quiero crear el proxy simple, que simplemente transfiere todas las solicitudes y respuestas. He hecho algunas búsquedas en línea y estoy un poco confundido sobre cómo escuchar las solicitudes en un puerto determinado y obtener las solicitudes HTTP. He tropezado con las clases Socket, ServerSocket, HttpURLConnection, pero no estoy seguro de cómo interactúan todas estas. Traté de leer los documentos, pero están entrelazados y son un poco difíciles de entender.

¿Puede indicarme la dirección correcta con respecto a las clases que probablemente debería utilizar para esta tarea, y quizás compartir un fragmento para escuchar en un puerto, obtener encabezados de solicitud HTTP, etc.?

Respuesta

5

Bueno, solo puedo suponer que su Proxy será un ServerSocket escuchando solicitudes en el puerto HTTP. Usted lee la solicitud a través del flujo de entrada del socket del servidor. Después de verificar que la solicitud cumple con las reglas del proxy, abrirá una HttpConnection al Servidor HTTP real y, usando la secuencia de salida en la conexión http, reenviará la solicitud del cliente y, a continuación, utilizando la secuencia de entrada HTTP, leerá el HTTP real. Respuesta del servidor, que finalmente reenviará al cliente utilizando el flujo de salida del socket.

En el proxy, como usted intercepta solicitudes y respuestas, puede manipularlas antes de reenviarlas.

¿No huele?