java改型2:@FormUrlEncoded带有默认字段
我需要发送一个带有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);
}
问题是,如何将默认值设置为这两个字段中的一个或两个字段,以便不必在每个请求中发送参数。例如,我想在每个请求中获得30个项目,只需使用begin字段即可。或者我想对这两个字段使用默认值:
public interface MusicService {
@Headers("Accept: Application/JSON")
@FormUrlEncoded
@POST("album/featured-albums")
Call<List<Album>> listFeaturedAlbums();
}
这样,我得到一个错误:
java.lang.IllegalArgumentException: Form-encoded method must contain at least one @Field.
# 1 楼答案
您必须像这样添加请求头:
这对我有用
# 2 楼答案
# 3 楼答案
目前我不认为你可以用一种非黑客的方式来做这件事
改造团队正在努力添加此功能:Allow specifying default @Field values. #951
当它完成时,您可以遵循此线程。或者帮助他们解决问题并提交PR:)