【问题标题】:How to pass pdf form-data body with Retrofit2如何使用 Retrofit2 传递 pdf 表单数据正文
【发布时间】:2021-10-12 18:17:22
【问题描述】:
我想使用 Retrofit2 上传包含其他字段的 pdf 文件。但我不知道如何为其创建请求正文。
@POST("filebase/upload")
suspend fun uploadPdfDocument(@Header(HEADER_AUTHORIZATION) authorization: String, @Body requestBody: RequestBody): UploadPdfDocumetResponse?
请帮帮我!
【问题讨论】:
标签:
android
kotlin
retrofit2
【解决方案1】:
如果你的依赖中存在 okhttp3 那么你可以使用这个漂亮的扩展功能
import okhttp3.RequestBody.Companion.asRequestBody
yourPdfFile.asRequestBody(yourPdfFile.getExtension())
getExtension()下面的函数
fun File.getExtension(): MediaType? {
var type: String? = null
val encoded: String = try {
URLEncoder.encode(name, "UTF-8").replace("+", "%20")
} catch (e: Exception) {
name
}
val extension = MimeTypeMap.getFileExtensionFromUrl(encoded)
if (extension != null) {
type = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension)
}
return type?.toMediaType()
}