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