2017-12-26 17 views
0

プロキシ経由で特定のURLのHTTPSコールを渡し、直接待機する必要があります。私はjava.netのProxySelectorを使用して独自のカスタムプロキシ実装を作成しました。それはHTTP呼び出し(私はその場合は、プロキシアクセスログで見ることができます)が正常に動作していますが、HTTPS呼び出しの場合は、それはプロキシを使用していないようです)。プロキシサーバーは適切に設定されており、一部のHTTPS呼び出しがプロキシを備えたブラウザから渡されたときにそのアクセスログが更新されています。Javaの特定のHTTPSリクエストにプロキシを使用

package com.blabla.proxy; 

import java.io.IOException; 
import java.net.InetSocketAddress; 
import java.net.Proxy; 
import java.net.ProxySelector; 
import java.net.SocketAddress; 
import java.net.URI; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.logging.log4j.LogManager; 
import org.apache.logging.log4j.Logger; 

import com.vuclip.pubsub.logging.PubSubUtil; 
import com.vuclip.pubsub.logging.client.GooglePubSubClient; 

public class CustomProxySelector extends ProxySelector { 

    private static final Logger LOGGER = LogManager.getLogger(PubSubUtil.class); 
    private final ProxySelector def; 
    private final String PUB_SUB_URL = "pubsub.googleapis.com"; 
    List<Proxy> proxyList = new ArrayList<Proxy>(); 
    private Proxy proxy=null; 

    public CustomProxySelector(ProxySelector aDefault) { 
     this.def = aDefault; 
    } 

    @Override 
    public void connectFailed(URI arg0, SocketAddress soc, IOException ex) { 
     LOGGER.error("Error in connecting to proxcy "+soc +" for pubsub :"+ ex); 
    } 

    @Override 
    public List<Proxy> select(URI uri) { 

     if ("https".equalsIgnoreCase(uri.getScheme()) && uri.getHost().startsWith(PUB_SUB_URL) 
       && GooglePubSubClient.isProxyEnabled()) { 

      synchronized (this) { 
       if (proxy == null) { 
        proxy = new Proxy(Proxy.Type.SOCKS, 
          new InetSocketAddress(GooglePubSubClient.getProxyHost(), GooglePubSubClient.getProxyPort())); 
       } 
      } 

      proxyList.add(proxy); 
      LOGGER.debug("ProxyList:" + proxyList); 
      return proxyList; 
     } 
     proxyList = def.select(uri); 
     LOGGER.debug("Default proxy list : " + proxyList); 
     return proxyList; 
    } 
} 
+0

GooglePubSubClient.isProxyEnabled()がtrueを返しますか? – StephaneM

+0

はい。デバッグモードでチェックしました。それは真の価値を持っています。 –

答えて

0

Proxy.Type.SOCKSをProxy.Type.HTTPに変更してくれました。

関連する問題