10

私の Internet Explorer は、Web アクセス用の自動プロキシ ファイル (いわゆる PAC) を持つように設定されています。私のJavaプログラムでもこれを使用する方法はありますか?

以下の Java コードは、プロキシをまったく使用していないようです。

ArrayList<Proxy> ar = new ArrayList<Proxy>(ProxySelector.getDefault().select(new URI("http://service.myurlforproxy.com")));
for(Proxy p : ar){
  System.out.println(p.toString()); //output is just DIRECT T.T it should be PROXY.
}

また、プロキシ スクリプトを Java コントロール パネル ([コントロール] -> [Java]) に設定しましたが、結果は同じでした。Java用のPACファイルをプログラムで設定する方法がないことがわかりました。

人々は System.setProperties(..) に http.proxyHost を使用しますが、これはプロキシ スクリプト (PAC ファイル) ではなく、プロキシ ホストを設定するためだけのものです。

4

4 に答える 4

9

わお!Java で Proxy Auto-Config (PAC) ファイルを読み込むことができました。以下のコードとパッケージを参照してください。

import com.sun.deploy.net.proxy.*;
.
.
BrowserProxyInfo b = new BrowserProxyInfo();        
b.setType(ProxyType.AUTO);
b.setAutoConfigURL("http://yourhost/proxy.file.pac");       
DummyAutoProxyHandler handler = new DummyAutoProxyHandler();
handler.init(b);

URL url = new URL("http://host_to_query");
ProxyInfo[] ps = handler.getProxyInfo(url);     
for(ProxyInfo p : ps){
    System.out.println(p.toString());
}

あなたのマシンにはすでに [com.sun.deploy.net.proxy] パッケージがあります! [deploy.jar] を検索 ;D

于 2012-06-08T15:27:05.983 に答える
2

Java には、JS PAC ファイルを解析するためのサポートが組み込まれていません。あなたは自分の好きにしなさい。できることは、そのファイルをダウンロードして、そこからプロキシ ホストを解析することです。あなたはこれを読むべきです。

于 2012-06-07T20:07:23.903 に答える
1

@Jaehの回答に基づいて、以下のコードを使用しました。SunAutoProxyHandlerはAbstractAutoProxyHandlerを実装し、 PluginAutoProxyHandlerと呼ばれる代替の具体的な実装がありますが、その実装はそれほど堅牢ではないようです。

    BrowserProxyInfo b = new BrowserProxyInfo();
    b.setType(ProxyType.AUTO);
    b.setAutoConfigURL("http://example.com/proxy.pac");

    SunAutoProxyHandler handler = new SunAutoProxyHandler();
    handler.init(b);

    ProxyInfo[] ps = handler.getProxyInfo(new URL(url));
    for(ProxyInfo p : ps){
        System.out.println(p.toString());
    }
于 2016-04-29T11:22:22.607 に答える