質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

0回答

4098閲覧

JavaからProxy.pacを利用してプロキシアドレス・ポートを取得したい

naonao0214

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

1グッド

0クリップ

投稿2018/09/18 11:03

前提・実現したいこと

サーバ上から、JavaMailを用い、Office365のメールを受信しています。
このたび、メール受信時のみプロキシを利用する必要が出てきて、
さらにそのプロキシアドレスをProxy.pacから取得しなければならなくなりました。

JavaMailでプロキシを利用することについては、How do I configure JavaMail to work through my proxy server?
を読む限り、JavaMail v1.6以降を利用することで解決できそうですが、肝心のProxy.pac
からのプロキシアドレス・ポートの取得で躓いています。

発生している問題・エラーメッセージ

ネットの情報を見る限り、Proxy.pacのJavaScriptを自前で解釈するか、
com.sun.deploy.net.proxy.* を利用することで出来そうな雰囲気でした。

前者はあまたの組み込みの関数に対応する必要がありそうなので、却下したい。。
後者については、参考になるページがあったので、以下のように試したのですが、
うまく解釈してくれていません。

以下の「試したこと」の内容では、適切ではないということでしょうか?
そもそも、私がやろうとしていることは無理があるのでしょうか?

試したこと

まずは普通のhttpプロトコルのプロキシをProxy.pac経由で取得できるか確認するため、
Microsoft社の「PAC ファイルについて」のサンプルを利用し、
以下のファイルを http://xxxxx/proxy/proxy.pac として参照できるよう配置しました。

javascript

1function FindProxyForURL (url, host) { 2 if (isPlainHostName(host)) { 3 return "DIRECT"; 4 } else { 5 if (shExpMatch(url, "http://www.bing.com/")) { 6 return "PROXY www.bing-proxy.com:6060"; 7 } else if (shExpMatch(url, "http://www.microsoft.com/")) { 8 return "PROXY www.microsoft-proxy.com:7070"; 9 } else { 10 return "PROXY www.other-proxy.com:8080"; 11 } 12 } 13}

で、How to use automatic proxy configuration script in Javaを参考にして、
http://www.bing.com/ へのアクセス時に利用するプロキシを取得しようとしましたが、DIRECTが返ってきます。。。

java

1import java.net.URL; 2 3import com.sun.deploy.net.proxy.BrowserProxyInfo; 4import com.sun.deploy.net.proxy.ProxyType; 5import com.sun.deploy.net.proxy.SunAutoProxyHandler; 6 7public class TestMain { 8 public static void main(String[] args) throws Exception { 9 String url = "http://www.bing.com/"; 10 String proxyPacUrl = "http://xxxxx/proxy/proxy.pac"; 11 BrowserProxyInfo b = new BrowserProxyInfo(); 12 b.setType(ProxyType.AUTO); 13 b.setAutoConfigURL(proxyPacUrl); 14 SunAutoProxyHandler handler = new SunAutoProxyHandler(); 15 handler.init(b); 16 com.sun.deploy.net.proxy.ProxyInfo[] ps = handler.getProxyInfo(new URL(url)); 17 for (com.sun.deploy.net.proxy.ProxyInfo p : ps) { 18 System.out.println(p.toString()); 19 } 20 } 21}

補足情報(FW/ツールのバージョンなど)

Java SDK 1.8 を利用しています。

raccy👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問