【发布时间】:2015-10-07 00:57:58
【问题描述】:
我正在将现有代码库迁移到 Retrofit 2,但在理解 Multipart 请求的新语法时遇到了一些问题。我也在使用 Kotlin,尽管除了一些语法更改之外,我认为这对于这个特定问题应该无关紧要。
这是我现在拥有的:
val audioDuration = RequestBody.create(null, audioDuration.toString())
val file = RequestBody.create(MediaType.parse("audio/mp4"),
File(context.filesDir, filename).absoluteFile)
sendAudioChunk(audioDuration, file).enqueue(callback)
这是 API 的定义:
@Multipart
@POST("path_to_request")
fun sendAudioChunk(@Part("duration") audioDuration: RequestBody,
@Part("audio") audioBlob: RequestBody) : Call<ResponseObject>
在 Retrofit 1.9 上,我使用 TypedString 和 TypedFile 作为请求参数,现在似乎需要使用 OkHttp 中的 RequestBody,但由于请求无法正确执行,我必须遗漏一些东西。
【问题讨论】:
-
Jake Wharton 的解决方案是推荐的方法; stackoverflow.com/questions/38507040/… 您创建 @Part 参数类型为 MultipartBody.Part 参数,其中可以包含文件名。