retrofit 2 动态设置零件参数名称
retrofit 2 dynamically set part parameter name
我可以使用改造 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 中实现此类功能吗?
您可以尝试使用 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 */});
这应该对你有用。
我可以使用改造 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 中实现此类功能吗?
您可以尝试使用 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 */});
这应该对你有用。