改造 2:使用默认字段@FormUrlEncoded

2022-09-04 04:27:58

我需要发送带有标头的请求。响应是 JSON 格式的一些音乐专辑的列表。可以有两个可选参数:总计(默认值 = 5)和开始(默认值 = 0)application/x-www-form-urlencoded

以下是我用来发送此请求的界面:

public interface MusicService {
    @Headers("Accept: Application/JSON")
    @FormUrlEncoded
    @POST("album/featured-albums")
    Call<List<Album>> listFeaturedAlbums(@Field("total") int total, @Field("begin") int begin);
}

问题是,如何将默认值设置为其中一个或两个字段,这样我就不必在每个请求中发送参数。例如,我想在每个请求上获得30个项目,然后只玩开始字段。或者,也许我想对这两个字段都使用默认值:

public interface MusicService {
    @Headers("Accept: Application/JSON")
    @FormUrlEncoded
    @POST("album/featured-albums")
    Call<List<Album>> listFeaturedAlbums();
}

有了这个,我得到一个错误:

java.lang.IllegalArgumentException:表单编码方法必须至少包含一个@Field。


答案 1

目前,我不认为你可以以一种非黑客的方式做到这一点。

改造人员正在努力添加此功能:允许指定默认@Field值。 #951

您可以在完成时遵循此线程。或者帮助他们并提交公关:)


答案 2
Call<List<Album>> listFeaturedAlbums(@Body CustomFields );

class CustomFields {
 String total;
 String begin = 0;
 public CustomFields( String total ) {
   this.total = total;
 }
...
getters&setters
..
}

推荐