异步get请求
private fun asyncGet() {
val url = ""
//创建request请求对象
val request = Request.Builder()
.url(url)
//.method()方法与.get()方法选取1种即可
.method("GET", null)
.build()
//创建call并调用enqueue()方法实现网络请求
OkHttpClient().newCall(request)
.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
}
})
}
异步post请求
private fun asyncPost() {
val url = ""
//添加post请求参数
val requestBody = FormBody.Builder()
.add("userName", "name")
.add("passWord", "pass")
.build()
//发送josn
//var jsonObject = JSONObject()
//jsonObject.put("studentNumber","1713630001")
//jsonObject.put("password","123456")
//val requestBody=jsonObject.toString().toRequestBody("application/json".toMediaType())
//创建request请求对象
val request = Request.Builder()
.url(url)
.post(requestBody)
.build()
//创建call并调用enqueue()方法实现网络请求
OkHttpClient().newCall(request)
.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
}
})
}
post json
private fun asyncPost() {
val url = "http://8.137.8.86/api/student/login"
var jsonObject = JSONObject()
jsonObject.put("studentNumber","1713630001")
jsonObject.put("password","123456")
val jsonBody=jsonObject.toString().toRequestBody("application/json".toMediaType())
//创建request请求对象
val request = Request.Builder()
.url(url)
.post(jsonBody)
.build()
//创建call并调用enqueue()方法实现网络请求
OkHttpClient().newCall(request)
.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
response.body?.string()?.let { Log.d("resp", it) }
}
})
}
等待数据,刷新ui
private fun asyncPost() {
Thread{
//为了防止堵塞主线程,在开启一个线程
//把下面代码放到这里
val url = "http://8.137.8.86/api/student/login"
var jsonObject = JSONObject()
jsonObject.put("studentNumber","1713630001")
jsonObject.put("password","123456")
val jsonBody=jsonObject.toString().toRequestBody("application/json".toMediaType())
//创建request请求对象
val request = Request.Builder()
.url(url)
.post(jsonBody)
.build()
//创建call并调用enqueue()方法实现网络请求
OkHttpClient().newCall(request)
.enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
response.body?.string()?.let { Log.d("resp", it) }
runOnUiThread{
//do something
}
}
})
}.start()
}
解析json数据
object FastJsonTest {
@JvmStatic
fun main(args: Array<String>) {
parse()
tojson()
parseArray()
}
/**
* 解析json数据
*/
fun parse() {
//JSON对象通常被序列化,也就是字符串形式
val jsonstr =
"{code:0,msg:'查询用户信息' , user:{id:12,name:'Herrona'},list:[{id:1,name:'yg'},{id:2,name:'yf'}]}"
//最顶层的JSON对象
val root = JSONObject.parseObject(jsonstr)
println("json数据:$root")
//获得整型数据
val code = root.getInteger("code")
//获得字符串型数据
val msg = root.getString("msg")
println("代码:$code")
println("消息:$msg")
//获得对象
val user = root.getJSONObject("user")
println("学号:" + user.getInteger("id"))
println("姓名:" + user.getString("name"))
//获得数组类型的属性
val list = root.getJSONArray("list")
//遍历数组
for (i in list.indices) {
val obj = list[i] as JSONObject
print("账号:" + obj.getIntValue("id") + "\t")
println("姓名:" + obj.getString("name"))
}
}
/**
* 将某java对象转换为json对象
*/
fun tojson() {
val user = User()
user.id = 12
user.name = "Herrona"
val list: MutableList<User> = ArrayList()
list.add(User(1, "yg"))
list.add(User(2, "yf"))
println("将java对象转换为json对象:" + JSON.toJSON(user))
println("将java对象列表转换为json对象:" + JSON.toJSON(list))
}
/**
* 解析数组类型
*/
fun parseArray() {
val jsonstr = "[{'name':'yg','id':1},{'name':'yf','id':2}]"
//顶层是数组
val arr = JSON.parseArray(jsonstr)
//遍历数组
for (i in arr.indices) {
val obj = arr[i] as JSONObject
print("账号:" + obj.getIntValue("id") + "\t")
println("姓名:" + obj.getString("name"))
}
//已知元素类型
val list = JSON.parseArray(jsonstr, User::class.java) //第二个参数指定元素类型
for (user in list) {
println(user)
}
}
}
/**
* Title: User * Description: 用户对象
* @author Herrona
*/internal class User {
var id: Int? = null
var name: String? = null
constructor() {}
constructor(id: Int?, name: String?) : super() {
this.id = id
this.name = name
}
override fun toString(): String {
return "学号:$id\t姓名:$name"
}
}