You need to send a photo, header and several fields in form-data.
If you send a photo separately, it is sent to the server successfully. (Status 200)
If you send a photo with the form-data fields, the photo does not come to the server, and the fields come. (Status 200).
Help, maybe something is wrong in the code
Postman request works correctly: 
Interface Code:
@Multipart @PATCH("user") Call<UserData> updateUserData(@Header("ACCESS-TOKEN") String accessToken , @QueryMap Map<String, String> stringMap , @Part MultipartBody.Part file); Method call code:
public static void udpateUserDataWithPhoto(Callback<UserData> callback, Map<String, String> map1) { String token = SharedPreferenceStorage.getInstance().getServerAccessToken(); File file = new File(Constants.PATH_TO_PROFILE_PHOTO + "avatar.jpg"); MultipartBody.Part body = prepareFilePart(USER_profile_photo, file); App.getApi().updateUserData(token, map1, body).enqueue(callback); } private static MultipartBody.Part prepareFilePart(String partName, File file) { String mimeType = URLConnection.guessContentTypeFromName(file.getName()); if (mimeType != null) { RequestBody requestFile = RequestBody.create(MediaType.parse(mimeType), file); // MultipartBody.Part is used to send also the actual file name return MultipartBody.Part.createFormData(partName, file.getName(), requestFile); } else { return null; } } The code for creating the object Retrofit2:
OkHttpClient okHttpClient = new OkHttpClient.Builder() .addInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY)) //logging .build(); retrofit = new Retrofit.Builder() .baseUrl(Constants.BASE_URL) //Базовая часть адреса .addConverterFactory(GsonConverterFactory.create()) //Конвертер, необходимый для преобразования JSON'а в объекты .client(okHttpClient) .build(); iRetrofit = retrofit.create(IRetrofit.class); //Создаем объект, при помощи которого будем выполнять запросы // ... public static IRetrofit getApi() { return iRetrofit; } The strangest thing is that when sending 3 fields and a file, the server returns status 200 and accepts strings, but does not accept the file.
In postmen, this query passes without problems (1st picture)
If you send only a file, without 3 of these fields - the server also gives the status 200 and accepts this image file normally. (seen in the logs)
Could it be that the fields conflict with Multipart?
Used library versions
implementation 'com.squareup.retrofit2:retrofit:2.3.0' implementation 'com.squareup.retrofit2:converter-gson:2.3.0' implementation 'com.squareup.okhttp3:logging-interceptor:3.10.0' 
