サイト移転のお知らせ:http://techbooster.org/に移転しました

DefaultHttpClientでBasic認証使ったアクセスを行う

2月 23, 2011   //   by kkato   //   アプリケーション  //  No Comments

「DefaultHttpClientを使ってコンテンツを取得する」でWeb上のコンテンツを取得する方法を説明しました。

DefalutHttpClientではURLを指定してコンテンツを取得することが可能ですが、場合によってはそのURLにアクセスするには認証が必要なことがあります。

今回はBasic認証が必要なURLにアクセスしてコンテンツを取得する方法を説明します。

それでは続きからどうぞ

認証情報とスコープ

DefalutHttpClientに認証情報(ユーザー名とパスワード)とその認証を行うスコープを設定することでBasic認証でのアクセスが可能になります。

認証情報(ユーザーIDとパスワード)はCredentialsインタフェースを実装したクラス、スコープはAuthScopeクラスが担います。

Credentialsインタフェースを実装したクラスには

  • NTCredentials:NTLM認証
  • UsernamePasswordCredentials:Basic認証

があります。

今回はBasic認証ですのでUsernamePasswordCredentialクラスを使います。

UsernamePasswordCredentialクラスのコンストラクタでユーザー名とパスワードを指定します。

public UsernamePasswordCredentials(String userName, String password)

次にAuthScopeクラスですが、コンストラクタは第1引数にはホストを、第2引数にはポート番号を指定します。

public AuthScope (String host, int port)

どのホストに対しても認証を行う場合には第1引数にnullを指定します。また、全てのポート番号に対して行う場合は第2引数に負の値を指定します。

サンプル

以下にサンプルを示します。

  • ユーザー名:HOGE
  • パスワード:foofoo
  • ホスト:www.hoge.ne.jp
  • ポート番号:80番
  • 取得するコンテンツ:www.hoge.ne.jp/hogehoge.text

まずは認証情報とスコープを設定します。

DefaultHttpClient httpClient = new DefaultHttpClient();
Credentials credentials = new UsernamePasswordCredentials("HOGE","foofoo");
AuthScope scope = new AuthScope("www.hoge.ne.jp", 80);
httpClient.getCredentialsProvider().setCredentials(scope, credentials);

これでBasic認証でのアクセスが可能になったのであとは通常の場合と同じです。

StringBuilder uri = new StringBuilder("http://www.hoge.ne.jp/hogehoge.txt");
HttpGet request = new HttpGet(uri.toString());
HttpResponse httpResponse = null;
try {
	httpResponse = httpClient.execute(request);
} catch (Exception e) {
	Log.d(TAG, "Error Execute");
}

関連する記事:

Sponsored Link

Comments are closed.

技術書新刊 発売中

アンドロイドアカデミアには、CIやテスト、互換検証など実務に生きるノウハウをあつめています

技術書新刊 発売中

Android Next!はAndroid 7.0に対応したはじめての技術書です!


The Web Explorer 2はCSSの中央寄せやWebAudioなど未来を読み解く一冊です


Revised TypeScript in DefinitelylandはTypeScript 2.0(β)に対応した解説書です。インストールから型定義まで幅広くサポートしています


技術書をかこう!はエンジニアらしい執筆環境を構築、HowTo本です