如何使用FormUrlEncoded仅发送所选参数 - Retrofit

时间:2017-09-21 12:46:30

标签: android retrofit2

我正在使用改装库进行Api调用。在我的一个api中我只需要发送选定的数据。在我的函数中我有4个参数,但我只想发送选定的参数。

我正在使用该功能

@POST(FILTER)
@FormUrlEncoded
Call<JsonObject> filterUsers(@Field("age") String age,
                             @Field("gender") String gender,
                             @Field("height") String height,
                             @Field("weight") String weight);

我希望只有选定的参数才能添加到该功能中。 在该函数中,它可以是这些参数中的任何一个或这些参数的某种组合 我怎么能这样做?

例如如果我有年龄和性别的值,我只需要从这两个值调用api,或者如果我有高度和年龄的值,那么我必须调用api来自只有身高和年龄。

1 个答案:

答案 0 :(得分:1)

您可以使用FieldMap,如下所示:

@POST(FILTER)
@FormUrlEncoded
Call<JsonObject> filterUsers(@FieldMap Map<String, String> fields);

然后,仅将map传递给所需的字段。