Проблема с работой с данными Multipart формы Retrofit2 - PullRequest
1 голос
/ 03 февраля 2020

Я знаю, что не стоит использовать multipart для простой аутентификации текста. но мне нужно использовать его с предоставленным мне API. Я испробовал все возможные методы.

Работает нормально с почтальоном, но не с модификацией 2

подробности типа запроса

подробности типа запроса

использованный код пробовал

    //RequestBody requestNameRq = RequestBody.create(MediaType.parse("text/plain"),serviceNameValue);
    //RequestBody requestAmountRq = RequestBody.create(MediaType.parse("text/plain"),serviceAmountValue.toString());

/* Create Request Body */
//MultipartBody.Builder builder = new MultipartBody.Builder().setType(MultipartBody.FORM)
//        .addFormDataPart("service",serviceNameValue)
//        .addFormDataPart("amount", String.valueOf(serviceAmountValue));


//RequestBody requestBody = new MultipartBody.Builder().setType(MultipartBody.FORM)
//        .addFormDataPart("service",serviceNameValue)
//        .addFormDataPart("amount",serviceAmountValue.toString()).build();

//MultipartBody.Part  multipartRequestBody = MultipartBody.Part
//        .createFormData("service",serviceNameValue)
//        .createFormData("amount",serviceAmountValue.toString());



//MultipartBody multipartBody = builder.build();

код для Apiservice

       @POST("services")
        Call<AddServiceResponse> addService(@Header("Authorization") String authToken,
                                            //@Body MultipartBody body);
                                            @Part("service") RequestBody service,
                                            @Part("amount") RequestBody amount);
                                            //@Part("service") String service,
                                            //@Part("amount") String password);
                                            //@Part("service") RequestBody service,
                                            //@Part("amount") RequestBody amount);
}

Ответы [ 2 ]

2 голосов
/ 03 февраля 2020

Пожалуйста, попробуйте добавить

@Multipart

до

@POST("services")
0 голосов
/ 03 февраля 2020

Измените свой класс ApiService

@Multipart
@POST("services")
        Call<AddServiceResponse> addService(
                                       @Header("Authorization") String authToken,
                                       @Part("service") MultipartBody.Part service,
                                       @Part("amount") MultipartBody.Part amount);

Затем создайте MultipartBody

MultipartBody.Part serviceBody = MultipartBody.Part.createFormData("service", "Somethin2");
MultipartBody.Part amountBody = MultipartBody.Part.createFormData("amount", "2344");

Затем вызовите

apiService.addService(serviceBody, amountBody);
...