Отправить массив MultipartBody путем модернизации - PullRequest
0 голосов
/ 21 мая 2018

Я могу отправить одну MultipartBody, которая содержит 3 изображения и некоторый атрибут, как показано ниже

Интерфейс:

@POST("test_request")
Call<ResponseBody> test(@Body RequestBody file);

код:

  private MultipartBody getMultiFile(CoursesAdded coursesAdded) {

    ArrayList<String> filePaths = new ArrayList<>();

    filePaths.add(coursesAdded.getImag1());
    filePaths.add(coursesAdded.getImag2());
    filePaths.add(coursesAdded.getImag3());


    MultipartBody.Builder builder = new MultipartBody.Builder();
    builder.setType(MultipartBody.FORM);


    builder.addFormDataPart("skill", coursesAdded.getCourse_name());
    builder.addFormDataPart("certificate_from",    coursesAdded.getCourse_location());
    builder.addFormDataPart("certificate_date", "null");

    for (int i = 0; i < filePaths.size(); i++) {
        File file = new File(filePaths.get(i));
        builder.addFormDataPart("file[]", file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file));
    }

    MultipartBody requestBody = builder.build();
    return requestBody;

}

Но теперь мне нужнодля отправки массива MultipartBody.

get Функция Array:

   private MultipartBody[] getArray() {

        MultipartBody[] multipartBodies = new MultipartBody[coursesAddedArrayList.size()];


        for (int i = 0; i < coursesAddedArrayList.size(); i++) {

            CoursesAdded coursesAdded = new CoursesAdded(
                    coursesAddedArrayList.get(i).getCourse_name(),
                    coursesAddedArrayList.get(i).getCourse_location(),
                    coursesAddedArrayList.get(i).getImag1(),
                    coursesAddedArrayList.get(i).getImag2(),
                    coursesAddedArrayList.get(i).getImag3()
            );

            multipartBodies[i] = getMultiFile(coursesAdded);
        }

        return multipartBodies;

    }

Интерфейс:

    @POST("test_request")
    Call<ResponseBody> addCourses(
            @Body MultipartBody[] requestsBody
            );

при отображении запроса в ответ, чтобы увидеть, что было отправлено, я получилследующий

[size = 1838 text = {"test": [{"border": {"data": [55,48,99,55,97,56,52,53,45,101, 97,…]

...