基本上,我想从我的计算机中嗅探HTTP/HTTPS请求和对远程URL (基本上是REST )的响应。我知道有很多工具可以帮助我得到我想要的东西,但是我必须编写一个实用程序来使用Java (因为我们正在开发的一些应用程序将使用这个工具)。
我想要做的是设置一个代理(或者反向代理--这里我对这些术语的理解是有限的),通过它,我将所有请求路由到真正的API。该代理必须捕获请求主体(如果是POST或PUT),并将请求转发到真正的API,捕获其响应并将其发送回客户端。
我遇到了,我使用它创建并运行了一个反向代理,使用它的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,这可能是不可接受的,因为我们期望的是将localhost:8990设置为一个代理,并将我的URL保持为http://myrealapplication.com/rest/operation1,这样它就可以将最终的客户机看作是来自实际API的响应。我能用暗拖来实现这一点吗?或者有其他工具可以公开我可以在程序中使用的Java吗?
请帮帮我!
谢谢你,斯里拉姆
发布于 2018-01-09 15:23:09
我认为你实际上正在寻找的是一个前向代理。下面是示例代码,它将帮助您创建一个示例代码。
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();
}
}希望能帮上忙!)
https://stackoverflow.com/questions/47921483
复制相似问题