您好,我正在try 与KTOR提出多种形式的请求,但我得到了以上错误.我如何序列化多部件Body?

   val body = MultipartBody.Builder().setType(MultipartBody.FORM)
    .addFormDataPart("choice","John Wick")
    .addFormDataPart("image",path,
        File(path).asRequestBody("application/octet-stream".toMediaType()))
    .build()

val httpResponse = client.post {
    url("https://example.com")
    setBody(body)
    header("Content-Type","application/json")
    header("Authorization", "Bearer key")
}

推荐答案

KTOR不能直接发送okhttp3.MultipartBody类的对象.请改用MultiPartFormDataContent类:

val body = MultiPartFormDataContent(
    formData {
        append("choice", "John Wick")
        append("image", File(path).readBytes(), Headers.build {
            append(HttpHeaders.ContentType, "application/octet-stream")
            append(HttpHeaders.ContentDisposition, "filename=\"file\"")
        })
    }
)

Android相关问答推荐

致命信号6(SIGABRT)MAUI应用程序在android net发布时崩溃.8、使用强制屏幕方向和并发GC

编写视觉转型

Kotlin DSL:为什么我可以从Play Store获取发布版本的日志(log)?

Jetpack Compose:如何将浮动操作按钮上方的子按钮居中对齐?

Android库中的kotlinCompilerExtensionVersion

如何使用Jetpack Compose实现此底表?

在Jetpack Compose中的隐藏状态栏后面绘制

使用Android Jetpack Compose,为子Composable定义ViewModel是不是一种糟糕的做法?

如果我的圆形图像的顶部居中于卡片内部,我如何在其下方画一条弧线?

OverridePendingTransition已弃用,我该怎么办?

Lateinit变量结果始终以kotlin格式未初始化

如何在Jetpack Compose中将对象的移动从一个路径平滑地切换到另一个路径?

android回收器查看点击事件无响应

Compose 状态不是 recomposing

当手表与手机断开连接时,有没有办法在我的 Wear OS 应用程序中显示操作系统级别的图标?

在 Jetpack Compose 中单击时更改表面项目的背景 colored颜色

如何放置在柱子的角落(底端)

为什么我在 Jetpack Compose 中被警告可选修饰符参数应该具有默认值修饰符?

如何从构建的流对象中发出值

如何获取 Material Design 3 的底部导航栏高度?