改造2动态设置零件参数名称

时间:2018-10-19 14:37:47

标签: android post retrofit2 multipartform-data

我可以使用改造2动态地将参数名称设置为多部分请求的一部分吗?

@Multipart
@POST(UPDATE_PROFILE)
Call<SignUp> sendUpdateProfileRequest(
            @Part("profile_img") RequestBody img_file,
            @Part("DYNAMIC_PARAM_NAME") RequestBody first_name,...);

其中DYNAMIC_PARAM_NAME类似于id_seller / id_buyer / id_buyer,其余参数和请求URL保持不变。

在打电话时我可以在Activity或Fragment中实现这种功能吗?

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Retrofit的@PartMap注释而不是@Part。只需如下更改API接口,

@Multipart
@POST(UPDATE_PROFILE)
Call<SignUp> sendUpdateProfileRequest(
        @Part("profile_img") RequestBody img_file,
        @PartMap Map<String, RequestBody> params,  /* notice the change here */
        ...
);

并像这样使用它,

... // code
Map<String, RequestBody> params = new HashMap<>();

// prepare RequestBody
RequestBody someDataBody = ....;

// add it Map object
params.put("DYNAMIC_PARAM_NAME", someDataBody);

// pass it to request
FooApiInterface api = ....;

Call<FooResponse> call = api.sendUpdateProfileRequest(imageFile, params);
call.enqueue({/* implement response listener */});

那应该为您解决问题。