Загрузить список изображений с пользовательским объектом, используя POST Api Retrofit 2 - PullRequest
0 голосов
/ 17 февраля 2020

Бэкэнд-сервис для Post api:

public System.Web.Mvc.JsonResultNewMarketActivityLog(FFM.BusinessObjects.MainObjects.MarketActivity.MarketActivityBO item,System.Web.HttpPostedFileBase[ ] files)

Я должен передать в нем два параметра. Одним из них является класс POJO MarketActivityBO, а вторым - список изображений для загрузки.

Поэтому я разрабатываю этот интерфейс в соответствии с требованием:

@Multipart
@POST("NewMarketActivityLog")
Call<SubmitResponse> submitNewActivity(@Part("item") RequestBody item, @Part MultipartBody.Part[] 
files);

Затем я преобразовал файл File [] в Multipartbody.Part. Массив и класс POJO для запроса тела. Теперь при вызове API всегда вызывается функция обратного вызова onFailure. Я новичок в Retrofit, поэтому, пожалуйста, помогите мне, я не могу разобраться в проблеме. Я упоминал код ниже:

MarketActivityBO item = new MarketActivityBO(userID, ActivityCategoryID, ActivityTypeID, 
Constants.settingResponseResult.getObjWeek().getWeekNo(), 2020, "2020-02-17", "Testing");

final MultipartBody.Part[] parts = new MultipartBody.Part[files.size()];
for (int i = 0; i < files.size(); i++) {

 RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"),files.get(i));
 parts[i] = MultipartBody.Part.createFormData("files", files.get(i).getName(),requestFile);

 }

Gson gson = new GsonBuilder().setLenient().create();
RequestBody modelBody = RequestBody.create(MediaType.parse("application/json"),gson.toJson(item));              

Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(Constants.URL + "/MarketActivity/")
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();
Api api = retrofit.create(Api.class);
Call<CancelJPStore> call = api.submitNewActivity(modelBody,parts);

call.enqueue(new Callback<CancelJPStore>() {

@Override
public void onResponse(Call<CancelJPStore> call, Response<CancelJPStore> response) {

CancelJPStore cancelJPStore=response.body();                 
Toast.makeText(MainActivity.this,cancelJPStore.isResponseObject()+"",Toast.LENGTH_SHORT).show();
}

@Override
public void onFailure(Call<CancelJPStore> call, Throwable t) {
       Toast.makeText(MainActivity.this,"Falseeee",Toast.LENGTH_SHORT).show();
   }
  });

Когда я запускаю мой код, запускается ошибка. Не могли бы вы, ребята, помочь мне с тем, что я делаю неправильно.

...