You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Retrofit2 Multipart请求报错,如何设置Part内容类型为application/json?

Retrofit2 Multipart请求中设置JSON类型Part的解决方法

你遇到的问题是:创建的person Part默认Content-Type为application/octet-stream,不符合后端接口application/json的要求,导致报错。

解决步骤

需要手动为person对应的RequestBody指定application/json媒体类型,再创建Multipart Part:

  1. 将PersonFull对象转为JSON字符串,包装成带指定类型的RequestBody:
val personJson = Gson().toJson(personFull)
val personRequestBody = personJson.toRequestBody("application/json".toMediaTypeOrNull())
  1. 使用该RequestBody创建Part(无需指定文件名,传入null即可):
val part2 = MultipartBody.Part.createFormData("person", null, personRequestBody)

完整调用代码

val requestBody = file.asRequestBody("image/*".toMediaTypeOrNull())
var filename = imageUrlPath + "_" + id.toString() + "_" + imageId

// 处理person参数,指定JSON类型
val personJson = Gson().toJson(personFull)
val personRequestBody = personJson.toRequestBody("application/json".toMediaTypeOrNull())
val part2 = MultipartBody.Part.createFormData("person", null, personRequestBody)

val part1 = MultipartBody.Part.createFormData("productImage", filename, requestBody)

这样设置后,person Part的Content-Type会被正确设置为application/json,后端就能正常解析该参数了。

内容的提问来源于stack exchange,提问作者Nazir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 07:42:07