Is it possible to send a String[] through Multipart using Retrofit?

I know I am late for this answer. you can use @Query("someKey[]") for sending arraylist in multipart. Heres is the working example.

@Multipart
    @POST("./")
    Call<JsonElement> addSubEvent(@Part(EndAPI.USE_CASE) RequestBody useCase,
                                  @Query("event_id[]") ArrayList<String> event_id,
                                  @Query("user_id[]") ArrayList<String> user_id,
                                  @Query("name[]") ArrayList<String> name,
                                  @Query("date_time[]") ArrayList<String> date_time,
                                  @Part("token") RequestBody token,
                                  @Part MultipartBody.Part... profilePic);

Hope It will help some one seeking for the answer.


creating multi part list to use as a array list

List<MultipartBody.Part> descriptionList = new ArrayList<>();
descriptionList.add(MultipartBody.Part.createFormData("param_name_here", values));

following is the function in service interface of retrofit.

@PUT("/")
@Multipart
Call<ResponseBody> uploadPhotos(
        @Part MultipartBody.Part placeId,
        @Part MultipartBody.Part name,
        @Part List<MultipartBody.Part> desclist, // <-- use such for list of same parameter
        @Part List<MultipartBody.Part> files  // <-- multiple photos here
);

Hope it helps someone. cheers... !!!


Just use @Part("items[]") List items

Like this:

List<String> items = new ArrayList();
    items.add("1");
    items.add("2");
    items.add("3");

@Multipart
@POST("/")
Call<Result> yourMethod(@PartMap() Map<String, RequestBody> partMap, @PartMap() Map<String, RequestBody> map, @Part MultipartBody.Part file, @Part("items[]") List<String> items);