« セカンドバッテリ | 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

TrackBack URL for this entry:
http://app.cocolog-nifty.com/t/trackback/3959/47238450

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

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