package com.abc.retrofit
import com.canbot.alading.MyResponse
import com.canbot.alading.RetryInterceptor
import okhttp3.OkHttpClient
import okhttp3.RequestBody
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.Body
import retrofit2.http.POST
import java.util.concurrent.TimeUnit
interface UploadFileService2 {
@POST("/abc/def")
suspend fun uploadFile(
@Body body: RequestBody
): MyResponse
companion object {
private val client by lazy {
OkHttpClient.Builder()
.addInterceptor(RetryInterceptor())
.connectTimeout(10, TimeUnit.SECONDS)
.readTimeout(10, TimeUnit.SECONDS)
.writeTimeout(10, TimeUnit.SECONDS)
.build()
}
private const val BASE_URL = "https://api.abc.cn/"
private val retrofit : Retrofit by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()}
val instance: UploadFileService2 by lazy {
retrofit.create(UploadFileService2::class.java)
}
}
}
使用:
可以查看RequestBody 的创建的各种方法.
private fun request(jpg: ByteArray) {
val requestBody: RequestBody = jpg.toRequestBody("application/octet-stream".toMediaType())
val filePart = MultipartBody.Part.createFormData("file", "123", requestBody)
lifecycleScope.launch() {
val result = UploadFileService2.instance.uploadFile(filePart)
}
}