BASIC認証があるサーバに対してファイルを送信するサンプルです。
サンプル上での設定値は以下の通り。
BASIC認証を行うにはHttpClientに対してCredentialsオブジェクトを設定します。
24~26行目にまとめて記述していますが、分けるとこんな感じです。
接続先ホストを設定します。
HttpHost への3番目の引数はプロトコルを指定します。
実際に接続する URL を指定します。
例えば PHP であれば http://~/hoge.php までのURLを指定します。
サンプルではファイルを送信しますので、FileBody に対して File を設定します。
Multipart で送信するので MultipartEntity を使用します。
HttpPost への setEntity へ設定します。
HttpClient への executeメソッドでサーバへ要求を発行します。
sampleコード
サンプル上での設定値は以下の通り。
| TARGETHOST | ホスト名+ドメイン名 |
| TARGETPORT | ポート番号 |
| UID | BASIC認証のユーザID |
| PWD | BASIC認証のパスワード |
| TARGETURL | 送信先URL |
| FILE | 送信するファイル |
BASIC認証を行うにはHttpClientに対してCredentialsオブジェクトを設定します。
24~26行目にまとめて記述していますが、分けるとこんな感じです。
AuthScope authScope = new AuthScope(TARGETHOST, TARGETPORT);
Credentials credentials = new UsernamePasswordCredentials(UID, PWD);
httpclient.getCredentialsProvider().setCredentials(authScope, credentials);
接続先ホストを設定します。
HttpHost への3番目の引数はプロトコルを指定します。
HttpHost host = new HttpHost(TARGETHOST, TARGETPORT, "http");
実際に接続する URL を指定します。
例えば PHP であれば http://~/hoge.php までのURLを指定します。
HttpPost httppost = new HttpPost(TARGETURL);
サンプルではファイルを送信しますので、FileBody に対して File を設定します。
FileBody sendFile = new FileBody(new File(FILE));
Multipart で送信するので MultipartEntity を使用します。
MultipartEntity reqEntity = new MultipartEntity();
reqEntity.addPart("file", sendFile);
HttpPost への setEntity へ設定します。
httppost.setEntity(reqEntity);
HttpClient への executeメソッドでサーバへ要求を発行します。
HttpResponse response = httpclient.execute(host, httppost);
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");
// ターゲット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 = httpclient.execute(host, httppost);
httpclient.getConnectionManager().shutdown();
return response.getStatusLine().getStatusCode();
}
}
コメント
コメントを投稿
・コメントはお気軽にどうぞ。
・記事に関係のないコメントはご遠慮ください。
・<b>, <i>, <a> などの一部の HTML タグを使用できます。