前回はBASIC認証とファイル送信だけでしたが、今回は内部からProxyサーバを経由する方法に対応させてみます。
追加の設定値は以下の通り。
新たに31~32行目を追加し、Proxyサーバを追加します。
sampleコード
追加の設定値は以下の通り。
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(); } }
コメント
コメントを投稿
・コメントはお気軽にどうぞ。
・記事に関係のないコメントはご遠慮ください。
・<b>, <i>, <a> などの一部の HTML タグを使用できます。