少し前にハマったのでメモ。
何でもVistaからプロキシの設定箇所が増えたらしい。
今まで
- インターネットオプション
だけだったのが
Vista以降
- netsh コマンド
でも設定できるようになった。
しかも、インターネットオプションとは別扱いらしい。
コマンドプロンプト上でのnetsh上の設定確認方法は
netsh winhttp show proxy
となる。
今までJavaでHttpConnectionクラス等を使用して外部と通信をする時にシステムに登録されているプロキシ情報を使用する場合は
接続前に環境設定でシステムのプロキシ設定の使用を有効化していれば、Windowsの場合はインターネットオプションに設定されているプロキシ設定を自動的に取得・使用してくれる。
システム環境設定使用の有効化
System.setProperty("java.net.useSystemProxies", "true")
が、netshコマンドで設定された値は上記では取得出来ない模様。。。
対応として、今のところ以下の物を確認出来ているが
正しい方法が他に有るかどうかは未確認。。。
- JNIを使用する
- Runtimeでnetshコマンドを叩いて文字列をスクレイピング
JNIについては、工数の関係上作成出来なかったが市販のライブラリにて取得出来る事は確認出来ている。
結局、今回はRuntimeの方を実装したけど正式な方法とかあるのかどうか、、、
Java8だったらjava.net.useSystemProxies
で取得できるようになってるのかな?