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:
- 将
PersonFull对象转为JSON字符串,包装成带指定类型的RequestBody:
val personJson = Gson().toJson(personFull) val personRequestBody = personJson.toRequestBody("application/json".toMediaTypeOrNull())
- 使用该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
相关产品推荐
相关产品推荐

