iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 18
0

昨天將 OKHTTP3 的準備動作完成,今天繼續來做後續的動作。

首先,要先宣告一個 receive 。

private val httpReceiver = object : BroadcastReceiver() {
        override fun onReceive(context: Context?, intent: Intent?) {
            intent?.extras?.let {
                val album = Gson().fromJson(it.getString("json"), Album::class.java)
            }
        }
    }

假設現在已經收到資料,但因為通常回的格式會是 JSON 但我們要把它轉成物件對我們後續分析、拿取資料會比較方便,所以昨天有 implementation GSON 這一個套件,便是用來將 JSON 轉成我們看得懂的物件。

val album = Gson().fromJson(it.getString("json"), Album::class.java)

這行便是將 response 的 json 轉成自建的 data class。

轉成 data class 之後,就把它當成一個物件來使用、取值!

而這是已經取到值的情形,那要如何對網路請求呢?

上面我們宣告了一個接收器,接下來要寫一個發送請求的。

val req = Request.Builder()
    .url("https://jsonplaceholder.typicode.com/albums/1")
    .build()
OkHttpClient().newCall(req).enqueue(object : Callback {
    override fun onResponse(call: Call, response: Response) {
        sendBroadcast(Intent("HttpGet").putExtra("json", response.body()?.string()))
    }

    override fun onFailure(call: Call, e: IOException) {
        Toast.makeText(this@HttpGetActivity, "Http Get Fail", Toast.LENGTH_SHORT).show()
    }
}

這樣就可以發送請求了!

但記得要註冊接收器
registerReceiver(httpReceiver, IntentFilter("HttpGet"))

與在不用時銷毀它
unregisterReceiver(httpReceiver)


上一篇
[Day 17] Android 實作 - OKHTTP3(1)
下一篇
[Day 19] Android 實作 - Retrofit(1)
系列文
Android心得筆記×Kotlin語法初探 不是新手村 是嬰兒村30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言