2017-12-21 8 views
1

私は基本的にリモートURL(基本的にはREST API)へのHTTP/HTTPS要求と応答を盗聴したいと思います。私が望むものを手に入れるためのツールがたくさんあると理解していますが、Javaでこれを行うためのユーティリティを書く必要があります(これは開発中のアプリケーションによって使用されるためです)。Undertow - REST APIへのHTTP/HTTPSトラフィックを監視するリバースプロキシの設定方法

私がしたいことは、プロキシ(またはリバースプロキシー - ここでは私の理解が限られています)をセットアップすることです。私はすべてのリクエストを実際のAPIにルーティングします。このプロキシは、リクエスト本体(POSTまたはPUTの場合)をキャプチャして、そのリクエストを実際のAPIに転送し、レスポンスをキャプチャしてクライアントに返す必要があります。

私はそのLoadBalancingProxyClientプロキシクライアントを使用してリバースプロキシを作成して実行することができたその使用、アンダートウに出くわしました。しかし、私はここにいくつか質問があります。

私のAPIがhttp://myrealapplication.com/rest/operation1で、JSONをこのAPIにPOSTしたいとします。次のように私はプロキシサーバーを作成している

  1. マイリバースプロキシは事実上、ソートのとなっています:だから私は私のリバースプロキシサーバを起動したら

     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(); 
    

    、二つのことがあります私の実際のAPIのエイリアスですが、このレイヤーでリクエストとレスポンスをどのようにキャプチャしますか?

  2. 私のリクエストがこのプロキシを通過するためには、URLをhttp://localhost:8990/rest/operation1に変更する必要があります。受け入れることができない可能性があります。localhost:8990として設定することですを入力し、私のURLをhttp://myrealapplication.com/rest/operation1としておくことで、実際のAPIからの応答であるためエンドクライアントを探します。

これを達成するために私は使用できますか?あるいは私のプログラムで使用できるJava APIを公開する他のツールがありますか?

助けてください!

おかげで、 スリラム

答えて

1

私はあなたが実際に探していることはForward Proxyだと思います。 作成するのに役立つサンプルコードを示します。

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(); 
    } 
} 

希望すると助かります! ;)

+1

ありがとうございますが、リクエストとレスポンスをどのようにキャプチャしますか? – sriramsridharan

関連する問題