创新实训博客(6)——Kotlin的okhttp、fastjson、intent传值

引入okhttp和fastjson依赖

直接修改build.gradle文件

// 第三方依赖
implementation 'com.alibaba:fastjson:1.1.71.android'
implementation 'com.squareup.okhttp3:okhttp:4.7.2'

AndroidManifest中添加网络访问权限

fastjson构造json对象

首先初始化一个json对象

然后使用put函数传进参数

val obj = JSONObject()
obj.put("username", username.text.toString())
obj.put("email", email.text.toString())
obj.put("password", passwd.text.toString())

fastjson解析json对象

首先把字符串转换成json对象

val resobj = JSON.parseObject(response.body!!.string())

然后读取对应的参数值

Toast.makeText(this@RegisterActivity, resobj["code"].toString() + "-" + resobj["msg"].toString(), Toast.LENGTH_SHORT).show()

okhttp构造请求

首先初始化一个HTTP客户端对象,然后设置好要发送的消息的类型

然后设置requestBody的内容,然后构造好一个请求

// 设置请求实例
val okHttpClient = OkHttpClient()
val mediaType = "application/json; charset=utf-8".toMediaType()
val requestBody = JSON.toJSONString(obj).toRequestBody(mediaType)
val request = Request.Builder()
            .url("$api/user/regist")
            .header("Auth", "token")
            .post(requestBody)
            .build()

okhttp发起请求并处理

okHttpClient.newCall(request).enqueue(object : Callback {
            override fun onFailure(call: Call, e: IOException) {
                e.printStackTrace()
            }
...

Looper.prepare()和Looper.loop()

在okhttp的子线程中,如果需要使用Toast等,必须要使用Looper。

Looper.prepare()
Toast.makeText().show()
Looper.loop()

intent传值

首先设置新的intent对象

val newIntent = Intent(this@LoginActivity, MainActivity::class.java)

然后使用put传值,并启动新的activity

newIntent.putExtra("data", resobj["data"].toString())

在activity端可以用intent读取到传来的参数

val data = intent.getStringExtra("data")

 

你可能感兴趣的:(创新实训博客(6)——Kotlin的okhttp、fastjson、intent传值)