您的位置:首页 > 理论基础 > 计算机网络

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

2020-07-14 06:21 423 查看

引入okhttp和fastjson依赖

直接修改build.gradle文件

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

AndroidManifest中添加网络访问权限

[code]<uses-permission android:name="android.permission.INTERNET" />

fastjson构造json对象

首先初始化一个json对象

然后使用put函数传进参数

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

fastjson解析json对象

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

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

然后读取对应的参数值

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

okhttp构造请求

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

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

[code]// 设置请求实例
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发起请求并处理

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

Looper.prepare()和Looper.loop()

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

[code]Looper.prepare()
Toast.makeText().show()
Looper.loop()

intent传值

首先设置新的intent对象

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

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

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

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

[code]val data = intent.getStringExtra("data")

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: