package com.abc.retrofit
import com.abc.alading.Emotion
import com.abc.alading.RetryInterceptor
import okhttp3.MultipartBody
import okhttp3.OkHttpClient
import retrofit2.Retrofit
import retrofit2.converter.gson.GsonConverterFactory
import retrofit2.http.Multipart
import retrofit2.http.POST
import retrofit2.http.Part
import java.util.concurrent.TimeUnit
interface UploadFileService {
@Multipart
@POST("/expression/filerecog")
suspend fun uploadFile(
@Part file: MultipartBody.Part
): List<Emotion>
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 = "http://149.230.40.193:8080/"
private val retrofit by lazy {
Retrofit.Builder()
.baseUrl(BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create())
.build()
}
val instance: UploadFileService by lazy {
retrofit.create(UploadFileService::class.java)
}
}
}
使用:
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 = HttpService.service.uploadFile(filePart)
}
}