Java Undertow-如何设置反向代理以监视到我的REST API的HTTP/HTTPS流量
我想基本上嗅探从我的计算机到远程URL(基本上是RESTAPI)的HTTP/HTTPS请求和响应。我知道有很多工具可以帮助我得到我想要的东西,但我必须用Java编写一个实用程序来实现这一点(因为这将被我们正在开发的一些应用程序所使用) 我想做的是设置一个代理(或者反向代理——我对术语的理解在这里是有限的),通过它我将所有请求路由到真正的API。此代理必须捕获请求主体(在POST或PUT的情况下)并将请求转发到真实API,捕获其响应并将其发送回客户端 我遇到了Undertow,使用它,我能够使用其Java Undertow-如何设置反向代理以监视到我的REST API的HTTP/HTTPS流量,java,proxy,reverse-proxy,undertow,Java,Proxy,Reverse Proxy,Undertow,我想基本上嗅探从我的计算机到远程URL(基本上是RESTAPI)的HTTP/HTTPS请求和响应。我知道有很多工具可以帮助我得到我想要的东西,但我必须用Java编写一个实用程序来实现这一点(因为这将被我们正在开发的一些应用程序所使用) 我想做的是设置一个代理(或者反向代理——我对术语的理解在这里是有限的),通过它我将所有请求路由到真正的API。此代理必须捕获请求主体(在POST或PUT的情况下)并将请求转发到真实API,捕获其响应并将其发送回客户端 我遇到了Undertow,使用它,我能够使用其
LoadBalancingProxyClient
代理客户端创建并运行反向代理。但我这里有几个问题
假设我的API是http://myrealapplication.com/rest/operation1
,我想向这个API发布一个JSON
我创建了一个代理服务器,如下所示:
LoadBalancingProxyClient loadBalancer = new LoadBalancingProxyClient();
loadBalancer.addHost(new URI("http://myrealapplication.com"));
loadBalancer.setConnectionsPerThread(20);
Undertow reverseProxy = Undertow.builder()
.addHttpListener(8990, "localhost")
.setIoThreads(4)
.setHandler(Handlers.requestDump(new ProxyHandler(loadBalancer, 3000, null)))
.build();
reverseProxy.start();
因此,启动反向代理服务器后,有两件事:
http://localhost:8990/rest/operation1
,这可能是不可接受的,因为我们希望做的是将localhost:8990
设置为代理,并将我的URL保留为http://myrealapplication.com/rest/operation1
,因此当响应来自实际API时,它会向最终客户机发出提示斯里拉姆我认为你实际上在寻找的是一个。 下面是帮助您创建一个的示例代码
public class ForwardProxyWithUndertow {
public static void main( String[] args ) {
final HttpHandler forwardProxyHandler = new ConnectHandler(ForwardProxyWithUndertow::handleNotFound );
Undertow.builder()
.addHttpListener(8080, "localhost")
.setHandler( forwardProxyHandler )
.build()
.start();
}
static void handleNotFound( HttpServerExchange e ){
e.setStatusCode(404);
e.endExchange();
}
}
希望能有帮助!;) 谢谢,但是如何捕获请求和响应?