【问题标题】:Intercept all outgoing http calls java拦截所有传出的http调用java
【发布时间】:2014-12-15 15:54:46
【问题描述】:

类似于 HttpFilter (javax.Servlet.Filter ),它在添加到 web.xml 时可以拦截任何传入 JVM/传出(作为响应)的请求,独立于框架(Spring/CXF/Jersy 等),我试图找到一个 API,它可以拦截来自 JVM 的任何传出 HTTP 调用,以添加/修改独立于框架的标头。此外,通过代理路由请求听起来势不可挡。

Outgoing HTTP call 这个词在论坛中经常被误解,所以让我用例子来解释一下。

让我们假设有两个 JVM,jvm1 和 jvm2。并且有从 JVM1 到 JVM2 的 HTTP 调用。我想在调用发生之前拦截从 JVM1 建立的 HTTP 连接以修改标头信息。我不希望将代码绑定到特定框架,以便我可以将拦截器捆绑为 jar 并与应用程序团队共享。修改 web.xml 就好了。

有什么建议吗?请帮忙!

【问题讨论】:

    标签: java http intercept


    【解决方案1】:

    两个 JVM 都可以以任何方式使用java.net.Socketjava.net.ServerSocket 进行通信,这里无法拦截任何内容。

    如果您通过(透明)proxy 连接,您可以拦截任何 HTTP 流量。代理会拦截任何内容,您可以修改任何内容。

    【讨论】:

    • 感谢彼得的回答。代理也无济于事。我正在尝试将 JVM1 收到的标头信息重新发送到 JVM2。
    • 晚了 3 年我知道......我最近不得不这样做并找到了你的问题。我最终创建了一个自定义的通用休息客户端构建器,它使用 Feign 和 RequestInterceptor 来拦截传出调用。
    【解决方案2】:

    我们选择了aspectj。不是最好的解决方案,但我们得到的唯一选择。

    【讨论】:

      猜你喜欢
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 2020-04-14
      • 1970-01-01
      • 2019-10-05
      • 2020-11-08
      相关资源
      最近更新 更多