Цепочка вызовов вызывает ошибку дооснащения и RxJava

#java #android #retrofit #rx-java

Вопрос:

У меня есть приложение, которое отправляет изображение на сервер и ждет ответа, но во многих случаях ответ занимает слишком много времени, и изображение отправляется неправильно и автоматически переходит к последнему изображению, которое находится в цикле for.

Вот код функции для отправки изображения

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

            order = ordersEv.get(i);


            Toast.makeText(this, "MOBMX: "   ordersEv.get(0), Toast.LENGTH_SHORT).show();

            File filesDir = this.getCacheDir();
            File photo = new File(filesDir, ""   ordersEv.get(i)   ".jpeg");

            try {
                photo.createNewFile();
            } catch (IOException e) {
                e.printStackTrace();
            }

            FileOutputStream fos = null;
            try {
                fos = new FileOutputStream(photo);
            } catch (IOException e) {
                e.printStackTrace();
            }

            try {
                fos.write(ticketsEv.get(i));
                fos.flush();
                fos.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

            RequestBody requestFile = RequestBody.create(MediaType.parse("multipart/form-data"), photo);
            MultipartBody.Part body = MultipartBody.Part.createFormData("image", photo.getName(), requestFile);

            //RXJava
            int finalI = i;
            apiService.uploadPodOffline(getString(R.string.uploadPodOfflinePetition), body, RequestBody.create(MediaType.parse("text/plain"), ordersEv.get(i)))
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Observer<UserData>() {
                        @Override
                        public void onSubscribe(@NotNull Disposable d) {

                        }

                        @Override
                        public void onNext(@NotNull UserData userData) {
                            try {
                                processResult(userData.getMsg(), userData.getData(), ordersEv.get(finalI));
                            } catch (Exception e) {
                                Toast.makeText(OnlineEvidenceActivity.this, "Error procesando la respuesta del servidor, por favor intente de nuevo", Toast.LENGTH_SHORT).show();
                            }
                        }

                        @Override
                        public void onError(@NotNull Throwable e) {

                        }

                        @Override
                        public void onComplete() {
                            Toast.makeText(getApplicationContext(), "Lote procesado.", Toast.LENGTH_SHORT).show();
                        }
                    });
        }
        
 

Ошибка, которая возникает, когда изображение не обрабатывается правильно, является

 HTTP FAILED: java.net.ProtocolException: expected 422764 bytes but received 425984
 

Это мой интерфейс ApiService:

 @Multipart
@POST("mobile/uploadpodoffline")
Observable<UserData> uploadPodOffline(@Header("petition") String petition,
                               @Part MultipartBody.Part image,
                               @Part ("order") RequestBody order);
 

Есть идеи, как сделать цепной вызов, чтобы избежать ошибки в ответе (?)

Спасибо.