Java HTTP代理服务器

Ali*_*lsh 17 java proxy tomcat http jersey

我需要实现一个HTTP代理服务器应用程序,它将来自多个客户端的请求代理到远程服务器.

以下是步骤:

  1. 客户转发请求代理
  2. 代理转发请求到服务器
  3. 服务器向Proxy返回请求
  4. 代理向客户返回请求.

我只是不确定如何实现这个代理.我的第一个想法是实现一个tomcat应用程序,它使用jersey/apache httpclient将请求转发给远程服务器并将响应返回给客户端?

有没有更好的方法来实现这样的代理服务器?

代理需要处理多个线程.

use*_*421 11

您无法将其实现为servlet,也没有理由使用任何形式的HTTP客户端.

一个无特色的代理服务器是一件非常简单的事情:

  1. 接受连接并为其启动一个线程.
  2. 从客户端读取请求直到空白行.
  3. 解压缩GET或CONNECT命令或其他任何命令并连接到指定的主机.
  4. 如果失败,请发回适当的HTTP错误响应,关闭套接字,然后忘记它.
  5. 否则启动两个线程来复制字节,每个方向一个.没什么好看的,只是

    while ((count = in.read(buffer)) > 0)
    {
        out.write(buffer, 0, count);
    }
    
    Run Code Online (Sandbox Code Playgroud)
  6. 当其中一个套接字读取EOS时,关闭另一个套接字输出并退出获得EOS的线程.
  7. 如果作为EOS源的套接字已经关闭输出,请将它们关闭.

或者使用Apache SQUID.


Ily*_*iev 8

查看LittleProxy - 它有传入和传出请求的内置类; 您可以像编写servlet中的HTTP请求一样编写代码.