「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);