概要
Javaのクラス内で、HTTP通信を使って外部から画像データなどを取得する方法について、HttpURLConnection
を使ってデータを取得していました。
このHttpURLConnection
について、今まではただ必要な設定として認識していたものを、それぞれどのような事を設定しているのかを改めて確認をしたいと自分用にまとめようと思いました。
ソースコード
今回は、外部から画像データを取得して、それがPNGの画像データであればそのInputStream
を生成するという部分のみ抜粋しました。
String targetContentType = "image/png";
DataInputStream inputStream = null;
try {
// フォーマットがPNGの画像を指定
URL url = new URL("https://dummyimage.com/570x150");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setAllowUserInteraction(false);
conn.setUseCaches(false);
conn.setInstanceFollowRedirects(true);
conn.setRequestMethod("GET");
conn.connect();
if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
if (conn.getContentType().equals(targetContentType)) {
inputStream = new DataInputStream(conn.getInputStream());
}
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
if (inputStream != null) {
// 画像のInputStreamに対してやりたい事
}
HttpURLConnectionに設定したフィールド
上記で設定したフィールドのみ列挙しています。
フィールド | 修飾子と型 | 説明 |
---|---|---|
allowUserInteraction | protected boolean | 接続時にユーザー名やパスワードの入力を求められたとき、許可をするかどうか |
url | protected URL | HTTP通信をしたい対象のURL |
useCaches | protected boolean | キャッシュを使用を許可するかどうか |
method | protected String | HTTPに使用するメソッド(GETやPOSTなど) |
instanceFollowRedirects | protected boolean | プロトコルがリダイレクトに従うかどうか |