Retrofit 2:@FormUrlEncoded with default fields

Ash*_*lak 14 java android retrofit

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

这是我用来发送此请求的接口:

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

问题是,如何将默认值设置为这些字段中的一个或两个,这样我就不必在每个请求中发送参数.例如,我想在每个请求中获得30个项目,并且只使用begin字段.或者我想使用两个字段的默认值:

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

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

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

And*_*fat 5

目前,我认为您无法通过这种非骇客的方式来做到这一点。

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

您可以在该线程完成时关注它。或帮助他们并提交PR :)