لا تريد إرسال ملف ولكن التعديل التحديثي لا يسمح بالقيمة الفارغة

1

أنا أرسل بيانات أولية مع ملف باستخدام إعادة التعديل. عندما أرسل ملفًا يعمل بشكل مثالي ولكن إذا كنت لا أرغب في إرسال ملف وتمرير فارغة بدلاً من ذلك ، يتعطل التطبيق.

MyInterfcace.class

public interface MainInterface {
 @POST("contact/updateWithFile")
Call<AddCustomerModel> updateCustomerWithFile(@Body RequestBody data);
  }

استدعاء Api

private void updateCustomerWithFiles(JSONObject obj) {
    progressBarHandler.show();


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

    builder.addFormDataPart("bodyData", String.valueOf(obj));

    if (parts.size() > 0) {
        for (int i = 0; i < parts.size(); i++) {
            File file = new File(parts.get(i));
            builder.addFormDataPart("uploadingFiles", file.getName(), RequestBody.create(MediaType.parse("multipart/form-data"), file));
        }
    } else {
        File f = null;
        builder.addFormDataPart("uploadingFiles", "", RequestBody.create(MediaType.parse("multipart/form-data"), f));
    }


    File file = new File("");

    MultipartBody requestBody = builder.build();

    MainInterface apiService = ApiClient.getClient().create(MainInterface.class);

    Call<AddCustomerModel> call = apiService.updateCustomerWithFile(requestBody);

    call.enqueue(new Callback<AddCustomerModel>() {
        @Override
        public void onResponse(Call<AddCustomerModel> call, Response<AddCustomerModel> response) {
            progressBarHandler.dismiss();
            if (response.isSuccessful()) {
                finish();
                overridePendingTransition(0, 0);
            } else {
                Log.d("TAG", "No Data!!!");
            }
        }

        @Override
        public void onFailure(Call<AddCustomerModel> call, Throwable t) {
            progressBarHandler.dismiss();
        }
    });
}

كيف يمكنني حل هذا؟

1 إجابة

0

لن يسمح التعديل التحديثي بالقيمة null للجسم ، وهذا سلوك مقصود ،

من مناقشة القضية ،

When you omit a body param we send an empty body with no content type.

إذا كنت تريد معرفة المزيد عن سبب اتخاذ هذا القرار ، فألق نظرة على المشكلة التي تمت مناقشتها في جيثب سكوير ،

https://github.com/square/retrofit/issues/1488

:مؤلف
فوق
قائمة طعام