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

Proxyを経由してアクセスする

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

DefaultHttpClientでBasic認証使ったアクセスを行う」や「DefaultHttpClientを使ってコンテンツを取得する」でDefaultHttpClientクラスを使ってネットワーク上のコンテンツにアクセスする方法を説明しましたが、そのアクセスの際にProxyサーバを経由することも可能です。

今回はその方法を説明したいと思います。

それでは続きへどうぞ。

Proxyサーバの設定

まずはProxyサーバを経由しない普通の場合のソースコードです。
今回はhttp://hoge.ne.jp/hoge.jpgをGetで取得することとします。

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

次にProxyサーバを経由するようにコードを追加します。必要なコードは2行だけです。
※Proxyサーバのアドレスは192.168.0.1、ポートは8080番とします

まずはProxyサーバのアドレスとポートを指定してHttpHostクラスを生成します。
そしてそのHttpHostクラスのインスタンスを、DefaultHttpClientのインスタンスにProxyとしてパラメータに設定します。

DefaultHttpClient httpClient = new DefaultHttpClient();

// 以下の2行を追加
HttpHost proxy = new HttpHost("192.168.0.101", 8080);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

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

Proxyサーバにユーザ名とパスワードが必要な場合

DefaultHttpClientでBasic認証使ったアクセスを行う」と同じように行います。

Credentials credentials = new UsernamePasswordCredentials("HOGE","foofoo");
AuthScope scope = new AuthScope("192.168.0.101", 8080);
httpClient.getCredentialsProvider().setCredentials(scope, credentials);

関連する記事:

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本です