改造如何在参数中添加逗号

时间:2019-09-03 08:49:26

标签: android retrofit retrofit2

我想要的结果是这样:

  

http://192.168.100.140/fitbook/public/api/bookings_trainer/1?include=city,trainee,payment_type

但是每当我尝试发送数据时, 使用我的代码:

final Call<BaseResponse<TrainerBookingInfo>> call = client.getTrainerBookings(SharePreferences.getUserId(context) ,"city,trainee,payment_type,");


@POST(GET_TRAINER_BOOKINGS )
Call<BaseResponse<TrainerBookingInfo>> getTrainerBookings(@Query("id") String id,
                                                          @Query("include") String include);

它变成了这样的东西:

http://192.168.100.140/fitbook/public/api/bookings_trainer?id=17&include=city%2Ctrainee%2Cpayment_type%2C

我如何删除“ id”

http://192.168.100.140/fitbook/public/api/bookings_trainer/1?include=city,trainee,payment_type,

我的代码有什么问题?

1 个答案:

答案 0 :(得分:0)

默认情况下,翻新URL对字符进行编码,这在当前的网络应用程序中非常常见。 (,变成%2C)。您可以禁用如下所示的URL编码:

@POST(GET_TRAINER_BOOKINGS )
Call<BaseResponse<TrainerBookingInfo>> getTrainerBookings(@Query("id") String id,
                                                      @Query("include", encoded = true) String include);

这将使Retrofit知道不使用URL编码。

参见此处:https://github.com/square/retrofit/blob/f0b441b89eaf69397b35ec72704ca1bc6a9ddd6a/retrofit/src/main/java/retrofit2/http/Query.java

  

参数名称和值默认为URL编码(请指定{@link   encode()编码= true}   更改此行为)。

更新第二个问题:

String GET_TRAINER_BOOKINGS = "http://192.168.100.140/fitbook/public/api/bookings_trainer/{id}";

@POST(GET_TRAINER_BOOKINGS)
Call<BaseResponse<TrainerBookingInfo>> getTrainerBookings(@Path("id") String id, @Query("include", encoded = true) String include);

在此处了解更多信息:https://square.github.io/retrofit/