Kotlin(Java)でURLによって指定したコンテンツをバイナリとしてダウンロードする
Androidアプリを作っている際に必要になったので調査してやってみました。内容的にはJavaも殆ど同じように出来るのでタグに入れてあります。個人的なメモ。
コード
「文字列で表現されたURLを受け取って、GETメソッドでリクエストを送信し、ダウンロードしてバイナリを返す」という動作をする関数として実装すると以下のようになります。
fun getBinaryFromURL(url: String)
var inputStream : InputStream? = null
val url = URL(url)
val con = url.openConnection() as HttpURLConnection
con.setRequestProperty("Content-Type", "application/octet-stream")
con.requestMethod = "GET"
con.connect()
if (con.responseCode === HttpURLConnection.HTTP_OK) {
inputStream = con.inputStream
}
inputStream?.let {
val buffer = ByteArray(1024 * 1024 * 20)
val bOut = ByteArrayOutputStream()
while (true) {
val len = it.read(buffer)
if (len < 0) {
break
}
bOut.write(buffer, 0, len)
}
return bOut.toByteArray()
}
return null
}
Androidで使用する際はAsyncTaskなどを利用して非同期に実行してください。