Proxyを経由してアクセスする
「DefaultHttpClientでBasic認証使ったアクセスを行う」や「DefaultHttpClientを使ってコンテンツを取得する」でDefaultHttpClientクラスを使ってネットワーク上のコンテンツにアクセスする方法を説明しましたが、そのアクセスの際にProxyサーバを経由することも可能です。
今回はその方法を説明したいと思います。
それでは続きへどうぞ。
Proxyサーバの設定
まずはProxyサーバを経由しない普通の場合のソースコードです。
今回はhttp://hoge.ne.jp/hoge.jpgをGetで取得することとします。
1 2 3 4 5 6 7 8 | DefaultHttpClient httpClient = new DefaultHttpClient();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としてパラメータに設定します。
1 2 3 4 5 6 7 8 9 10 11 12 13 | DefaultHttpClient httpClient = new DefaultHttpClient();// 以下の2行を追加HttpHost proxy = new HttpHost("192.168.0.101", 8080);httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);HttpResponse httpResponse = null;try { httpResponse = httpClient.execute(request);} catch (Exception e) { Log.d(TAG, "Error Execute");} |
Proxyサーバにユーザ名とパスワードが必要な場合
「DefaultHttpClientでBasic認証使ったアクセスを行う」と同じように行います。
1 2 3 | Credentials credentials = new UsernamePasswordCredentials("HOGE","foofoo");AuthScope scope = new AuthScope("192.168.0.101", 8080);httpClient.getCredentialsProvider().setCredentials(scope, credentials); |