Android中如何通过Retrofit向服务器发送字符串列表?
修复Retrofit发送字符串列表格式错误的问题
方案一:使用JSON请求体(推荐)
这种方式能直接保证JSON格式正确,前提是你的Retrofit已配置JSON转换器(比如GsonConverterFactory)。
- 创建请求体数据类
data class HoursRequest( val hours: List<String> )
- 修改Api Service接口
将原接口的RequestBody替换为自定义的数据类:
@POST("profile") suspend fun postSubmitDrug( @Header("Authorization") token: String, @Body body: HoursRequest ): Response<ProfileData>
- 在Fragment中构造请求并发送
直接传入字符串列表即可,Retrofit会自动序列化为符合要求的JSON:
val hoursRequest = HoursRequest(parentActivity.hourMinuteList) // 调用接口发送请求 yourApiService.postSubmitDrug(token, hoursRequest)
最终发送的JSON格式会是:
{ "hours": ["22:05","19:57"] }
方案二:若必须使用Multipart表单提交
如果业务要求必须用表单提交,不要直接把列表转为字符串,而是逐个添加列表元素:
val multiPart = MultipartBody.Builder() .setType(MultipartBody.FORM) .addFormDataPart("_method", "post") // 遍历列表,逐个添加表单项 parentActivity.hourMinuteList.forEach { hour -> multiPart.addFormDataPart("hours[]", hour) } requestBody = multiPart.build()
这样服务器会正确解析到带引号的字符串数组。
内容的提问来源于stack exchange,提问作者Dr.KeyOk
相关产品推荐
相关产品推荐

