Android Kotlin 從0到1 之從API中獲取數(shù)據(jù),發(fā)起一次簡單請求??!

到這里我們可以嘗試使用Kotlin 發(fā)起一次API 的請求獲取數(shù)據(jù)。帶你體驗最簡潔的數(shù)據(jù)請求,將數(shù)據(jù)解析,并展示!

首先我們需要一個API,用于請求數(shù)據(jù)。

請求地址:http://japi.juhe.cn/joke/content/text.from
請求參數(shù): page=&pagesize=&key=26e9ed96a3ea69201844871a9ef4acec
請求方式:GET

數(shù)據(jù)格式自己拼接請求一下,我就不給了.

首先我們創(chuàng)建一個Request 類用于進(jìn)行請求

class Request(val url:String){
    // 請求方法
    fun request(){
        val requestData = URL(url).readText()
        Log.e("TAG",requestData)
    }
}

解釋下上面的這段代碼,首先創(chuàng)建了一個類,構(gòu)造器中要求傳入一個url,在請求方法中通過 URL(url).readText() 發(fā)起請求,得到返回的數(shù)據(jù),通過log打印返回的結(jié)果 其實發(fā)起請求只需要一行帶代碼 URL(url).readText()它會返回請求到的json數(shù)據(jù)我們可以調(diào)用測試一下,記得請求數(shù)據(jù)需要在子線程,還有不要忘了網(wǎng)絡(luò)請求權(quán)限;

 async{
    var url:String = "http://japi.juhe.cn/joke/content/text.from?page=&pagesize=&key=26e9ed96a3ea69201844871a9ef4acec"
    Request(url).request()
 }

async { }是一個擴(kuò)展函數(shù),其作用就是開辟一個線程,接下來在MainActivity調(diào)用運行測試下返回結(jié)果

看下圖,調(diào)用成功接下來我們將解析json,并將這些數(shù)據(jù)使用控件進(jìn)行展示


image.png

解析數(shù)據(jù)口用到了Kotlin中的數(shù)據(jù)類(data)
第一步:創(chuàng)建一個File

image.png

第二步,跟據(jù)數(shù)據(jù)格式編寫這個File (通過Json編寫B(tài)ean)

package com.xzz.draw.js_kotin
/**
 * Created by Administrator on 2017/6/8 0008.
 */
data class RequestFore(val error_code:Int,val reason:String,val result:RequestData)

data class RequestData(val data:List<Joke>)

data class Joke(val content:String,val hashId:String,val unixtime:Int,val updatetime:String)

你們仔細(xì)看下數(shù)據(jù)格式可以看出來三個data完全是解析了json的一個bean

第三步:就是將json解析到我們的數(shù)據(jù)類中,我們需要通過Gson包對Json進(jìn)行解析 需要在Gradle 中添加依賴

 compile "com.google.code.gson:gson:2.4"

最后在我們的Request 請求類中對json 進(jìn)行解析,在方法添加返回值將數(shù)據(jù)返回,

fun request() : RequestFore{
  val data = URL(url).readText()
  // 解析json到數(shù)據(jù)類
  val request = Gson().fromJson(data,RequestFore::class.java)
  return request
}

最后在MainActivity 進(jìn)行數(shù)據(jù)展示 :運行看結(jié)果

  async {
        val request:RequestFore = Request(url).run()
        // 線程轉(zhuǎn)換,切換至UI線程
        uiThread {
            main_hello.text = request.result.data[0].toString()
        }
    }
image.png

可以看到,線程切換成功,數(shù)據(jù)顯示

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,533評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,872評論 25 709
  • 從三月份找實習(xí)到現(xiàn)在,面了一些公司,掛了不少,但最終還是拿到小米、百度、阿里、京東、新浪、CVTE、樂視家的研發(fā)崗...
    時芥藍(lán)閱讀 42,787評論 11 349
  • 從零開始安裝配置 ionic 并創(chuàng)建 helloIonic 項目 推薦安裝 node v6.10.2 LTS 版本...
    四次元君閱讀 849評論 0 1
  • 看到一個相互加好友很久但是從未有過交談的豆瓣作者,在她的朋友圈里轉(zhuǎn)發(fā)了一條推送“自由職業(yè)者的黃金時代”,文章從經(jīng)濟(jì)...
    桃錦閱讀 484評論 1 3

友情鏈接更多精彩內(nèi)容