Java 改型2:@FormUrlEncoded带有默认字段

Java 改型2:@FormUrlEncoded带有默认字段,java,android,retrofit,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")

我需要发送一个带有
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);
}
公共接口音乐服务{
@标题(“接受:应用程序/JSON”)
@FormUrlEncoded
@发布(“专辑/特色专辑”)
调用listFeaturedAlbums(@Field(“total”)int-total,@Field(“begin”)int-begin);
}
问题是,如何将默认值设置为这两个字段中的一个或两个字段,以便不必在每个请求中发送参数。例如,我想在每个请求中获得30个项目,只需使用begin字段即可。或者我想对这两个字段使用默认值:

public interface MusicService {
    @Headers("Accept: Application/JSON")
    @FormUrlEncoded
    @POST("album/featured-albums")
    Call<List<Album>> listFeaturedAlbums();
}
公共接口音乐服务{
@标题(“接受:应用程序/JSON”)
@FormUrlEncoded
@发布(“专辑/特色专辑”)
调用listFeaturedAlbums();
}
这样,我得到一个错误:

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


目前我不认为你可以用一种非黑客的方式来做这件事

改造团队正在努力添加以下功能:

当它完成时,您可以遵循此线程。或者帮助他们提交一份PR:)

调用listFeaturedAlbums(@Body CustomFields);
类自定义字段{
字符串总数;
字符串begin=0;
公共自定义字段(字符串总数){
这个.总计=总计;
}
...
接球手和接球手
..
}

您必须像这样添加请求头:

 @Headers("Content-Type: application/x-www-form-urlencoded")

它对我有用

Reformation 2支持将null作为参数传递,只是不包含该字段。因此,您的第一个接口就是mMusicService.listFeaturedAlbums(null,null)。您必须使用Integer而不是int作为参数类型我知道这个选项。有没有更简洁的方法来做这件事?你试过使用
@Default
@Default(“totalDefaultValue”)(@Field(“total”)int-total
@FlorescuCătălin,
@Default
未知。@酷记,改用默认构造函数。这意味着什么?为什么不解释代码?
 @Headers("Content-Type: application/x-www-form-urlencoded")