在发送请求前需要加入一些配置来确保能够正常运行,具体可以参考之前的文章,这里就不多做赘述。个人笔记:Kotlin使用OKHttp解析Json文件_福尔蘑菇头的博客-CSDN博客
与get请求不同的是post请求一般都带有参数,所以需要创建一个jsonObject用于传递值
var jsonObject = JSONObject() jsonObject.put("userName","root") jsonObject.put("password","123456")
然后再将值以json形式发送,完整代码如下
fun UserLogin(){
val user = username.text.toString()
val pass = password.text.toString()
//构建url地址
var url = Strurl+"/prod-api/api/login"
//构建Json字符串
var jsonObject= JSONObject()
jsonObject.put("username",user)
jsonObject.put("password",pass)
var jsonStr=jsonObject.toString()
//调用请求
val requestBody = jsonStr?.let {
//创建requestBody 以json的形式
val contentType: MediaType = "application/json".toMediaType()
jsonStr.toRequestBody(contentType)
} ?: run {
//如果参数为null直接返回null
FormBody.Builder().build()
}
thread {
val client = OkHttpClient()
val request = Request.Builder()
.url(url)
.post(requestBody) //以post的形式添加requestBody
.build()
var response = client.newCall(request).execute()
val responseData = response.body?.string()
if (responseData != null) {
val jsonObject = JSONObject(responseData)
val token = jsonObject.getString("token")
Log.d("LoginActivity", "$token")
}
}
}