Отправка изображения и массива в Retrofit с использованием Multipart в Retrofit - PullRequest
0 голосов
/ 18 марта 2019

Я пытаюсь отправить изображение и массив, используя multipart.Я успешно загрузил изображение, используя multipart, но не смог отправить массив с ним.

интерфейс

  @Multipart
@retrofit2.http.POST("/" + POST_USER_STORIES)
Observable<JsonObject> uploadUserStory(@Part MultipartBody.Part storyData,
                                       @Nullable @Part("story[resource_type]") RequestBody resourceType,
                                       @Nullable @Part("story[mentionees]") RequestBody mentioneesType);

Я отправляю изображение, тип ресурса и массив

 RequestBody requestFile;

        requestFile = RequestBody.create(MediaType.parse("image/jpeg"), ImageUtil.getByteArrayFromUri(getApplicationContext(), uri));
        MultipartBody.Part photoData = MultipartBody.Part.createFormData("story[resource]", fileName, requestFile);
        RequestBody photoType = RequestBody.create(MediaType.parse("text/plain"), "image");
        RequestBody mentioneesyType = RequestBody.create(MediaType.parse("text/plain"), new Gson().toJson(list));


        ServerTask.getInstance().getServices()
                .uploadUserStory(photoData, photoType, mentioneesyType)
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(story -> {
                    DialogUtil.dismissAllDialog();
                    onUploadStorySuccess();
                }, err -> {
                    Log.d(TAG, "uploadUserStory: " + err.toString());
                    DialogUtil.dismissAllDialog();        
                });

, а массив пытается отправить

ArrayList<Mentionees> list = new ArrayList<>();

Mentionees mentioneesUploadModel = new Mentionees();

            mentioneesUploadModel.setColorCode("#ff00ff");
            mentioneesUploadModel.setFont("regular");
            mentioneesUploadModel.setPosX((int) getWidthInPercentage(f.getX()));
            mentioneesUploadModel.setPosY((int) getHeightInPercentage(f.getY()));
            mentioneesUploadModel.setMentionableId(result.getId());
            mentioneesUploadModel.setMentionableType(result.getSearchableType());
            mentioneesUploadModel.setName(result.getContent());
            mentioneesUploadModel.setPhoto("");

            list.add(mentioneesUploadModel);

мой запрос выполняется успешно, но массив не публикуется

...