Retrofit으로 String이나 Gson으로 변경하여 DataClass로 받아보기만 했지, 그 외 파일같은 것들은 되는지 생각도 못했다.
이번글은 이미지나 동영상같은 파일들을 Retrofit으로 어떻게 받아오는지에 대해 적어보려한다.
답은 너무나도 간단했다. 응답을 받을 데이터 타입을 ResponseBody로 지정하면 되는거더라... 뭐 더 고칠것도 없어 내용도 짧네
그 후 받은 ResponseBody를 byteArray로 변환하여 원하는 작업을 진행하면 된다. 나는 .zip파일을 받고 Internal Storage에 저장하는 작업을 원해서 다음 코드도 슬쩍 껴보았다.
@GET
@Streaming
fun startDownloadFW(@Url downloadLink: String): Single<ResponseBody>
private fun downloadingFW(zipFile: ResponseBody) {
var fos: FileOutputStream? = null
try {
val input = zipFile.bytes()
val file = File(filePath, fileName)
fos = FileOutputStream(file)
fos.write(input)
} catch (e: Exception){
Log.e(TAG, "${e.message}")
} finally {
fos?.close()
}
}
이상!