Przeglądaj źródła

Request添加KType标记

drake 4 lat temu
rodzic
commit
db1163cf6d

+ 3 - 0
net/src/main/java/com/drake/net/request/BaseRequest.kt

@@ -28,6 +28,7 @@ import okhttp3.HttpUrl.Companion.toHttpUrl
 import okhttp3.HttpUrl.Companion.toHttpUrlOrNull
 import java.io.File
 import java.net.URL
+import kotlin.reflect.typeOf
 
 abstract class BaseRequest {
 
@@ -272,8 +273,10 @@ abstract class BaseRequest {
     /**
      * 执行请求
      */
+    @OptIn(ExperimentalStdlibApi::class)
     inline fun <reified R> execute(): R {
         NetConfig.requestInterceptor?.interceptor(this)
+        okHttpRequest.setKType(typeOf<R>())
         val request = buildRequest()
         val newCall = okHttpClient.newCall(request)
         return newCall.execute().use {

+ 9 - 0
net/src/main/java/com/drake/net/request/RequestExtension.kt

@@ -24,6 +24,7 @@ import com.drake.net.tag.NetLabel
 import okhttp3.FormBody
 import okhttp3.Request
 import java.util.concurrent.ConcurrentLinkedQueue
+import kotlin.reflect.KType
 
 //<editor-fold desc="请求属性">
 /**
@@ -76,6 +77,14 @@ fun Request.isLogRecord() = run {
     label<NetLabel.RecordLog>()?.enabled
 }
 
+fun Request.Builder.setKType(type: KType) = apply {
+    setLabel(type)
+}
+
+fun Request.kType(): KType? = run {
+    label<KType>()
+}
+
 inline fun <reified T> Request.Builder.setLabel(any: T) = apply {
     tag(T::class.java, any)
 }