形成okhttp的RequestBody参数的问题

时间:2019-11-09 08:46:39

标签: android request 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取代。 我只能添加一个课程详细信息。

可能是什么问题?

如何实现(添加多个值-数组)?

1 个答案:

答案 0 :(得分:1)

。可能是什么问题? 问题是requestBody接受键值对,键对必须唯一。因此您的requestBody仅保存循环中的最后一个值。

解决方案

for(int i = 0; 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());

}

我尚未测试过,但希望它能工作。开心的编码