【问题标题】:JAVA - execute raw bytes HTTP requestJAVA - 执行原始字节 HTTP 请求
【发布时间】:2015-12-29 21:37:07
【问题描述】:

我正在做一个项目,我必须通过多个服务器发送 HTTP 请求,对它们进行加密和解密,对响应进行加密和解密。

这是一个想法:

  1. 我从配置代理设置的网络浏览器发送请求(通过 SwitchyOmega,因为我无法修改连接代理设置)以连接到“服务器 1”
  2. “服务器 1”以字节数组的形式接收请求
  3. “服务器 1”加密请求
  4. “服务器1”通过“代理”向“服务器2”发送加密请求
  5. “服务器 2”解密请求
  6. “服务器 2”执行请求
  7. “服务器 2”得到响应
  8. “服务器 2”加密响应
  9. “服务器 2”将加密响应发送到“服务器 1” 10.“服务器 1”解密响应并将其发送到 Web 浏览器。

这是一个小图:

architectural diagram

我无权访问“代理”,但“服务器 1”和“服务器 2”的一切都在我手上。它们最好是小型可移植 Java 应用程序。

我发现了很多关于使用 java 制作代理的事情,但是当我的“服务器 1”接收作为字节数组的请求时,我想找到一个可以正确执行它的 API。我尝试通过将字节转换为字符串,获取主机和端口并使用 URLConnection yc = oracle.openConnection();HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 之类的东西,但我必须解析 byte[] 以检索诸如方法(get、post、...)、主机之类的信息,端口,协议,...并重建查询。由于请求已经构建,所以看起来很多东西都是徒劳的。

我已经阅读了很多关于 Apache Commons HttpClient 的内容,看起来很棒,但我没有找到正确执行查询的方法。

Apache Commons HttpClient 有没有办法执行原始字节查询? 或者您还有其他执行原始字节查询的建议吗?

【问题讨论】:

    标签: java http proxy httprequest apache-httpclient-4.x


    【解决方案1】:

    发送原始字节请求的最简单方法是打开一个直接写入其 OutputStream 的套接字。但是,您必须解析响应或获取其字节并将它们发送回它们来自的另一个连接。最困难的部分是正确关闭套接字/流,具体取决于连接保持活动和内容长度等。

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2021-12-23
      • 2012-10-26
      • 1970-01-01
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      相关资源
      最近更新 更多