Java的HTTP代理服务器[关闭]

问题描述 投票:14回答:2

我需要实现一个HTTP代理服务器应用程序将从多个客户机向远程服务器代理请求。

具体操作步骤如下:

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

我只是不知道我应该如何实现这个代理。我首先想到的是要落实其采用球衣/ Apache的HttpClient的请求转发到远程服务器并返回响应返回给客户端一个Tomcat应用程序?

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

代理需要处理多个线程。

java http tomcat proxy jersey
2个回答
11
投票

您不能实现它作为一个servlet,并没有理由使用任何形式的HTTP客户端。

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

  1. 接受一个连接,并启动一个线程它。
  2. 从客户端读取到空行的请求。
  3. 提取GET或CONNECT命令或不管它是什么,并连接到指定主机。
  4. 如果失败,发回相应的HTTP错误响应,关闭套接字,并忘掉它。
  5. 否则,启动两个线程,每个方向复制字节,1。没有什么特别的,只是 while ((count = in.read(buffer)) > 0) { out.write(buffer, 0, count); }
  6. 当这些插座的一个读取EOS,关闭其他插座输出,并退出了在EOS线程。
  7. 如果是这样的EOS源的插座已经是输出关闭,关闭它们两者。

或者使用Apache SQUID。


8
投票

退房LittleProxy - 它有传入和传出请求内置类;你可以只写你的代码相似,你会如何处理在servlet HTTP请求。

© www.soinside.com 2019 - 2024. All rights reserved.