
cloud.hedou.abp.remote.AbpHttpClient.kt Maven / Gradle / Ivy
package cloud.hedou.abp.remote
import com.fasterxml.jackson.databind.ObjectMapper
import okhttp3.OkHttpClient
import okhttp3.logging.HttpLoggingInterceptor
import org.slf4j.LoggerFactory
import retrofit2.Retrofit
import retrofit2.converter.jackson.JacksonConverterFactory
import java.util.concurrent.TimeUnit
internal class AbpHttpClient(private val baseUrl: String, private val objectMapper: ObjectMapper) : HttpClient {
private val logger = LoggerFactory.getLogger(AbpHttpClient::class.java)
val okHttpClient: OkHttpClient by lazy {
OkHttpClient.Builder()
.callTimeout(8, TimeUnit.SECONDS)
.readTimeout(8, TimeUnit.SECONDS)
.writeTimeout(8, TimeUnit.SECONDS)
.addInterceptor(HeadersInterceptor())
.addInterceptor(HttpLoggingInterceptor(logger::info).setLevel(HttpLoggingInterceptor.Level.BODY))
.build()
}
val retrofit: Retrofit by lazy {
Retrofit.Builder()
.baseUrl(baseUrl)
.client(okHttpClient)
.addConverterFactory(JacksonConverterFactory.create(objectMapper))
.build()
}
override fun create(klass: Class): T {
val port = klass.getAnnotation(Api::class.java).port
return retrofit.newBuilder()
.baseUrl(retrofit.baseUrl().newBuilder().port(port).build())
.build()
.create(klass)
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy