Android Kotlin 从0到1 之从API中获取数据,发起一次简单请求!!

到这里我们可以尝试使用Kotlin 发起一次API 的请求获取数据。带你体验最简洁的数据请求,将数据解析,并展示!

首先我们需要一个API,用于请求数据。

请求地址:http://japi.juhe.cn/joke/content/text.from
请求参数: page=&pagesize=&key=26e9ed96a3ea69201844871a9ef4acec
请求方式:GET

数据格式自己拼接请求一下,我就不给了.

首先我们创建一个Request 类用于进行请求

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

解释下上面的这段代码,首先创建了一个类,构造器中要求传入一个url,在请求方法中通过 URL(url).readText() 发起请求,得到返回的数据,通过log打印返回的结果 其实发起请求只需要一行带代码 URL(url).readText()它会返回请求到的json数据我们可以调用测试一下,记得请求数据需要在子线程,还有不要忘了网络请求权限;

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

async { }是一个扩展函数,其作用就是开辟一个线程,接下来在MainActivity调用运行测试下返回结果

看下图,调用成功接下来我们将解析json,并将这些数据使用控件进行展示


image.png

解析数据口用到了Kotlin中的数据类(data)
第一步:创建一个File

Android Kotlin 从0到1 之从API中获取数据,发起一次简单请求!!_第1张图片
image.png

第二步,跟据数据格式编写这个File (通过Json编写Bean)

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)

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

你们仔细看下数据格式可以看出来三个data完全是解析了json的一个bean

第三步:就是将json解析到我们的数据类中,我们需要通过Gson包对Json进行解析 需要在Gradle 中添加依赖

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

最后在我们的Request 请求类中对json 进行解析,在方法添加返回值将数据返回,

fun request() : RequestFore{
  val data = URL(url).readText()
  // 解析json到数据类
  val request = Gson().fromJson(data,RequestFore::class.java)
  return request
}

最后在MainActivity 进行数据展示 :运行看结果

  async {
        val request:RequestFore = Request(url).run()
        // 线程转换,切换至UI线程
        uiThread {
            main_hello.text = request.result.data[0].toString()
        }
    }
Android Kotlin 从0到1 之从API中获取数据,发起一次简单请求!!_第2张图片
image.png

可以看到,线程切换成功,数据显示

你可能感兴趣的:(Android Kotlin 从0到1 之从API中获取数据,发起一次简单请求!!)