{"id":142,"date":"2025-10-04T10:44:22","date_gmt":"2025-10-04T01:44:22","guid":{"rendered":"https:\/\/devserver.kr\/blog\/?p=142"},"modified":"2025-10-04T10:44:22","modified_gmt":"2025-10-04T01:44:22","slug":"android-retrofit-%ed%8c%8c%ec%9d%bc-%eb%8b%a4%ec%9a%b4%eb%a1%9c%eb%93%9c","status":"publish","type":"post","link":"https:\/\/devserver.kr\/blog\/android\/android-retrofit-%ed%8c%8c%ec%9d%bc-%eb%8b%a4%ec%9a%b4%eb%a1%9c%eb%93%9c\/","title":{"rendered":"Android retrofit \ud30c\uc77c \ub2e4\uc6b4\ub85c\ub4dc"},"content":{"rendered":"\n<div class=\"wp-block-jetpack-markdown\"><pre><code class=\"language-kotlin\">private val myRetrofitCallback = (object : retrofit2.Callback&lt;ResponseBody&gt;{\n        override fun onFailure(call: Call&lt;ResponseBody&gt;, t: Throwable) {\n            println(&quot;download error : &quot; + t.message.toString())\n        }\n\n        override fun onResponse(call: Call&lt;ResponseBody&gt;, response: Response&lt;ResponseBody&gt;) {\n            var inputS : InputStream = response.body()!!.byteStream()\n            var bmp : Bitmap = BitmapFactory.decodeStream(inputS)\n            \/\/binding.imageView3.setImageBitmap(bmp)\n\n        }\n    })\n\n    fun saveFile(body: ResponseBody?, pathWhereYouWantToSaveFile: String):String{\n        if (body==null)\n            return &quot;&quot;\n        var input: InputStream? = null\n        try {\n            input = body.byteStream()\n            \/\/val file = File(getCacheDir(), &quot;cacheFileAppeal.srl&quot;)\n            val fos = FileOutputStream(pathWhereYouWantToSaveFile)\n            fos.use { output -&gt;\n                val buffer = ByteArray(4 * 1024) \/\/ or other buffer size\n                var read: Int\n                while (input.read(buffer).also { read = it } != -1) {\n                    output.write(buffer, 0, read)\n                }\n                output.flush()\n            }\n            return pathWhereYouWantToSaveFile\n        }catch (e:Exception){\n            Log.e(&quot;saveFile&quot;,e.toString())\n        }\n        finally {\n            input?.close()\n        }\n        return &quot;&quot;\n    }\n<\/code><\/pre>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[11,3],"tags":[],"class_list":["post-142","post","type-post","status-publish","format-standard","hentry","category-kotlin","category-android"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts\/142","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/comments?post=142"}],"version-history":[{"count":1,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts\/142\/revisions"}],"predecessor-version":[{"id":143,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/posts\/142\/revisions\/143"}],"wp:attachment":[{"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/media?parent=142"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/categories?post=142"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devserver.kr\/blog\/wp-json\/wp\/v2\/tags?post=142"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}