HttpOk3通过Kotlin 请求简单Demo

开启网络权限

需要在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()

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注