处理多部分表单数据Retrofit2的问题

问题描述 投票:1回答:2

我知道使用multipart进行简单文本身份验证是不明智的。但我需要将其与提供给我的api一起使用。我尝试了所有可能的方法。

与邮递员配合良好但不进行改造2

request type details

request type details

使用的代码尝试过

    //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);
}
android retrofit2 multipartform-data multipart retrofit2.6
2个回答
2
投票

请尝试添加

@Multipart

之前

@POST("services")

0
投票

修改您的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);
© www.soinside.com 2019 - 2024. All rights reserved.