« セカンドバッテリ | Main | iRedmine »

2010.01.08

Javaで認証が必要なProxyサーバを使用する

JavaのHttpURLConnectionを使ってhttp通信を行う場合、-Dhttp.proxyHostや-Dhttp.proxyPortを使用することでProxyサーバを使用することができます。しかしながら、これだけだと、認証が要求されるProxyサーバを使用することができません(407になります)。

そんなときは、java.net.Authenticatorの実装クラスを作成して、

Authenticator.setDefault(Authenticator a);

でそれをセットしてあげればOK。Authenticatorの実体クラスとしては、例えば以下のような感じ。

import java.net.Authenticator;
import java.net.MalformedURLException;
import java.net.PasswordAuthentication;
import java.net.URL;

public class ProxyAuthenticator extends Authenticator {
  private String proxyhost;
  private String userid;
  private String password;

  public ProxyAuthenticator(String proxyhost, String userid, String password) {
    this.proxyhost = proxyhost;
    this.userid = userid;
    this.password = password;
  }

  @Override
  public URL getRequestingURL() {
    if (this.proxyhost == null) return null;
    try {
      return new URL(this.proxyhost);
    } catch (MalformedURLException e) {
      return null;
    }
  }

  @Override
  protected RequestorType getRequestorType() {
    return RequestorType.PROXY;
  }

  @Override
  protected PasswordAuthentication getPasswordAuthentication() {
    if (this.userid == null || this.password == null) return null;
    return new PasswordAuthentication(userid, password.toCharArray());
  }
}


|

« セカンドバッテリ | Main | iRedmine »

Java」カテゴリの記事

Comments

Post a comment



(Not displayed with comment.)


Comments are moderated, and will not appear on this weblog until the author has approved them.



TrackBack


Listed below are links to weblogs that reference Javaで認証が必要なProxyサーバを使用する:

« セカンドバッテリ | Main | iRedmine »