okhttp 请求主体的参数形成问题
Issue in forming paramters of RequestBody for okhttp
我需要在 Requestbody 中添加多个课程详细信息。
我必须使用[]。
如果我想添加多门课程,我必须像下面这样添加:
for (int i = 0; i < listStudentCourseData.size(); i++) {
requestBody.put("fees[]", listStudentCourseData.get(i).getStrFees());
requestBody.put("course_id[]", listStudentCourseData.get(i).getStrCourseId());
requestBody.put("duration[]", listStudentCourseData.get(i).getStrDuration());
requestBody.put("course_status[]", listStudentCourseData.get(i).getStrCourseStatus());
requestBody.put("certificate[]", listStudentCourseData.get(i).getStrCertificate());
requestBody.put("book_material[]", listStudentCourseData.get(i).getStrBookMaterial());
requestBody.put("bag[]", listStudentCourseData.get(i).getStrBag());
}
问题是我只能为课程列表添加一个值。你可以看到我已经使用 for 循环多次添加相同的参数(根据后端要求)
我调试了代码,发现 for 循环中的所有参数值都被 last 替换了。
我只能添加一门课程的详细信息。
可能是什么问题?
或
如何实现(添加多个值 - 数组)?
。可能是什么问题?
问题是 requestBody 采用键必须唯一的键值对。因此,您的 requestBody 仅保存循环中的最后一个值。
解决方案
for (int i = 0; i < listStudentCourseData.size(); i++) {
requestBody.put("fees[" + i + "]", listStudentCourseData.get(i).getStrFees());
requestBody.put("course_id["+ i + "]",listStudentCourseData.get(i).getStrCourseId());
requestBody.put("duration["+ i + "]", listStudentCourseData.get(i).getStrDuration());
requestBody.put("course_status[" + i + ]",listStudentCourseData.get(i).getStrCourseStatus());
requestBody.put("certificate[" + i + "]", listStudentCourseData.get(i).getStrCertificate());
requestBody.put("book_material[" + i + "]",listStudentCourseData.get(i).getStrBookMaterial());
requestBody.put("bag[" + i + "]", listStudentCourseData.get(i).getStrBag());
}
我还没有测试过,但希望它能起作用。快乐编码
我需要在 Requestbody 中添加多个课程详细信息。
我必须使用[]。
如果我想添加多门课程,我必须像下面这样添加:
for (int i = 0; i < listStudentCourseData.size(); i++) {
requestBody.put("fees[]", listStudentCourseData.get(i).getStrFees());
requestBody.put("course_id[]", listStudentCourseData.get(i).getStrCourseId());
requestBody.put("duration[]", listStudentCourseData.get(i).getStrDuration());
requestBody.put("course_status[]", listStudentCourseData.get(i).getStrCourseStatus());
requestBody.put("certificate[]", listStudentCourseData.get(i).getStrCertificate());
requestBody.put("book_material[]", listStudentCourseData.get(i).getStrBookMaterial());
requestBody.put("bag[]", listStudentCourseData.get(i).getStrBag());
}
问题是我只能为课程列表添加一个值。你可以看到我已经使用 for 循环多次添加相同的参数(根据后端要求)
我调试了代码,发现 for 循环中的所有参数值都被 last 替换了。 我只能添加一门课程的详细信息。
可能是什么问题?
或
如何实现(添加多个值 - 数组)?
。可能是什么问题? 问题是 requestBody 采用键必须唯一的键值对。因此,您的 requestBody 仅保存循环中的最后一个值。
解决方案
for (int i = 0; i < listStudentCourseData.size(); i++) {
requestBody.put("fees[" + i + "]", listStudentCourseData.get(i).getStrFees());
requestBody.put("course_id["+ i + "]",listStudentCourseData.get(i).getStrCourseId());
requestBody.put("duration["+ i + "]", listStudentCourseData.get(i).getStrDuration());
requestBody.put("course_status[" + i + ]",listStudentCourseData.get(i).getStrCourseStatus());
requestBody.put("certificate[" + i + "]", listStudentCourseData.get(i).getStrCertificate());
requestBody.put("book_material[" + i + "]",listStudentCourseData.get(i).getStrBookMaterial());
requestBody.put("bag[" + i + "]", listStudentCourseData.get(i).getStrBag());
}
我还没有测试过,但希望它能起作用。快乐编码