HttpClientでの認証 2(HttpClient4.0)

前回はBASIC認証とファイル送信だけでしたが、今回は内部からProxyサーバを経由する方法に対応させてみます。

追加の設定値は以下の通り。

設定値
PROXYHOSTホスト名+ドメイン名
PROXYPORTポート番号

新たに31~32行目を追加し、Proxyサーバを追加します。

HttpHost proxy = new HttpHost(PROXYHOST, PROXYPORT);
httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);

sampleコード
package sample.http;


import java.io.File;

import org.apache.http.HttpHost;
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.UsernamePasswordCredentials;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.conn.params.ConnRoutePNames;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.DefaultHttpClient;


public class HttpAuthPost {
    
    public final int execute() throws Exception {
        
        DefaultHttpClient httpclient = new DefaultHttpClient();
        
        // BASIC認証の設定
        httpclient.getCredentialsProvider().setCredentials(
            new AuthScope(TARGETHOST, TARGETPORT),
            new UsernamePasswordCredentials(UID, PWD));
        
        // 接続先ホストを設定
        HttpHost host = new HttpHost(TARGETHOST, TARGETPORT, "http");
        // プロキシホストを設定
        HttpHost proxy = new HttpHost(PROXYHOST, PROXYPORT);
        httpclient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy);
        // ターゲットURLを設定
        HttpPost httppost = new HttpPost(TARGETURL);
        // 送信ファイル生成
        FileBody sendFile = new FileBody(new File("FILE"));
        
        MultipartEntity reqEntity = new MultipartEntity();
        reqEntity.addPart("file", sendFile);
        
        httppost.setEntity(reqEntity);
        
        HttpResponse response;
        
        response = httpclient.execute(host, httppost);
            
        httpclient.getConnectionManager().shutdown();
        
        return response.getStatusLine().getStatusCode();
    }
}

コメント