开启网络权限
需要在AndroidManifest.xml 的manifest下添加网络权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
第一步:引入依赖
implementation("com.squareup.okhttp3:okhttp:4.9.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.9.0")
添加过滤器
import android.util.Log
import okhttp3.Interceptor
import okhttp3.Response
class LogIntercept : Interceptor {
override fun intercept(chain: Interceptor.Chain): Response {
var request = chain.request()
var url = request.url
Log.e("Xiang", "intercept: 这里是请求过滤器,请求地址:${url}")
return chain.proceed(request)
}
}
二:GET请求
GlobalScope.async {
var okHttpClient = OkHttpClient.Builder().addInterceptor(LogIntercept()).build()
var request: Request = Request.Builder()
.url("https://api.admin.com/shop/discovery/categories")
.build()
okHttpClient.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
response.body?.let {
val dataBody = it.string()
Log.e("Xiang", dataBody)
}
}
}
})
}
三:form表单提交
var okHttpClient = OkHttpClient.Builder().addInterceptor(LogIntercept()).build()
var formBody = FormBody.Builder()
.add("AD_user","admin")
.add("AD_pass","888888")
.build()
var request: Request = Request.Builder()
.url("https://api.admin.com/admin/Chk_login.asp")
.post(formBody)
.build()
okHttpClient.newCall(request).enqueue(object : Callback {
override fun onFailure(call: Call, e: IOException) {
e.message?.let {
Log.e("Xiang", it.toString())
}
}
override fun onResponse(call: Call, response: Response) {
if (response.isSuccessful) {
response.body?.let {
val dataBody = it.string()
Log.e("Xiang", dataBody)
}
}
}
})
四:JSON格式提交
var okHttpClient = OkHttpClient.Builder().addInterceptor(LogIntercept()).build()
var stringBody = "{\"username\":\"123456\",\"password\":\"123456789\"}"
.toRequestBody("application/json;charset=utf-8".toMediaType())
var request: Request = Request.Builder()
.url("https://auth.admin.com/login")
.post(stringBody)
.build()