|
||||
|
||||
プロキシ経由でHTTP接続(Proxy認証)
認証が必要なプロキシ経由で、HTTP接続をする方法です。 準備HttpClient のダウンロード
Apache Jakarta Project Commons の HttpClient サイトの Download から、アーカイブをダウンロードします。 依存モジュールのダウンロード
HttpClientを使用するには、Apache Jakarta Project Commons の commons-codec と commons-logging が必要です。それぞれダウンロードします。 配置
それそれのアーカイブから jar ファイルを展開します。 実装実装の流れ
実装の流れは以下の通りです。
1.HttpClient のインスタンスを生成
HttpClient client = new HttpClient(); 2.Proxy 情報を設定
client.getHostConfiguration().setProxy(proxyHost, proxyPort); 3.Proxyの認証情報を設定(今回はNTLM認証)
今回は NTLM認証 ですので、Credentials には client.getState().setProxyCredentials(
new AuthScope(proxyHost, proxyPort),
new NTCredentials("userName", "password", "host", "domain")
);
4.Method の生成(今回は GetMethod)
今回は、 GetMethod method = new GetMethod("http://www.google.co.jp/");
5.Method の実行
int status = client.executeMethod(method); 6.Response の読み込み
Response の body を読む方法は 3つ用意されています。
method.getResponseBody()を使用します。
byte[] responseBody = method.getResponseBody(); 7.Response の処理今回は、標準出力に取得した内容を出力します。 System.out.println(new String(responseBody)); 8.Connection リソースの開放
Connection リソースは使用した後必ず開放しなければなりません。
method.releaseConnection(); ソースコード
・最終的なソースコードは以下のようになります。 TestProxy.java
import org.apache.commons.httpclient.MultiThreadedHttpConnectionManager;
import org.apache.commons.httpclient.NTCredentials;
import org.apache.commons.httpclient.auth.AuthScope;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.params.HttpConnectionManagerParams;
import org.apache.commons.httpclient.HttpStatus;
import java.io.IOException;
class TestProxy {
public static void main(String[] args) {
String proxyHost = "192.168.0.210"; // Proxyのホスト
int proxyPort = 8080; // Proxyのポート番号
// HttpClient の生成
HttpClient client = new HttpClient();
client.getHostConfiguration().setProxy(proxyHost, proxyPort);
client.getState().setProxyCredentials(
new AuthScope(proxyHost, proxyPort),
new NTCredentials("userName", "password", "host", "domain")
);
// GetMethod の生成
GetMethod method = new GetMethod("http://www.google.co.jp/");
method.setDoAuthentication(true);
try {
// GetMethod の実行
int status = client.executeMethod(method);
if (status != HttpStatus.SC_OK) {
throw new HttpException("Connection failed.");
}
// Response を取得して表示
byte[] responseBody = method.getResponseBody();
System.out.println(new String(responseBody));
} catch (HttpException e) {
System.err.println("Http error: " + e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.err.println("I/O error: " + e.getMessage());
e.printStackTrace();
} finally {
method.releaseConnection();
method = null;
}
}
}
|
|
|||
© 2007-2011 by いけまさ. All rights Reserved. ![]() ![]() | ||||