JAVA - 执行原始字节HTTP请求

时间:2015-12-15 10:37:38

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

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

这是一个想法:

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

    architectural diagram

    我无法访问“代理”,但“服务器1”和“服务器2”的所有内容都在我手中。它们最好是小型便携式Java应用程序。

    我发现很多关于用java创建代理的东西但是因为我的“服务器1”接收请求作为字节数组,我想找到一个可以正确执行它的API。我尝试将字节转换为String,获取主机和端口并使用URLConnection yc = oracle.openConnection();HttpURLConnection con = (HttpURLConnection) obj.openConnection();之类的东西,但我必须解析byte []以检索诸如methodes之类的信息(get,post,.. 。),主机,端口,协议,...并重建查询。由于请求已经构建,似乎没有什么。

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

    Apache Commons HttpClient有没有办法执行原始字节查询? 或者你还有另一个建议来执行原始字节查询吗?

1 个答案:

答案 0 :(得分:0)

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

相关问题