Прослушивание HTTP-запроса - PullRequest
6 голосов
/ 10 апреля 2011

У меня есть задание, в котором мне нужно создать прокси-сервер, который будет манипулировать некоторыми полученными запросами / ответами, реализовывать кэширование и т. Д.

Для начала я хочу создать простейший прокси,это просто передает все запросы и ответы.Я провел некоторые поиски в Интернете, и я немного запутался в том, как прослушивать запросы в определенном порту и получать HTTP-запросы.Я наткнулся на классы Socket, ServerSocket, HttpURLConnection, но я не уверен, как все они взаимодействуют.Я пытался читать документы, но они все переплетены и немного сложны для понимания.

Можете ли вы указать мне правильное направление относительно того, какие классы мне следует использовать для этого задания, и, возможно, поделиться фрагментом дляпрослушивание порта, получение заголовков HTTP-запросов и т. д.

Ответы [ 2 ]

5 голосов
/ 10 апреля 2011

Ну, я могу только предположить, что ваш прокси будет ServerSocket, прослушивающий запросы через порт HTTP.Вы читаете запрос через поток ввода сокета сервера.После проверки того, что запрос соответствует правилам прокси, вы откроете HttpConnection для реального HTTP-сервера и, используя поток вывода в http-соединении, перенаправите запрос клиента, затем, используя входной поток http-соединения, прочитаете реальный HTTP.Ответ сервера, который вы в конечном итоге отправите обратно клиенту, используя поток вывода сокета.

В прокси, поскольку вы перехватываете запросы и ответы, вы можете манипулировать ими перед пересылкой.

Звучит правильно?

1 голос
/ 10 апреля 2011

Вот несколько вводных материалов для сокетов Java: http://www.oracle.com/technetwork/java/socket-140484.html

...