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());

}

我还没有测试过,但希望它能起作用。快乐编码