在Retrofit API中使用FormUrlEncoded时发布默认值

时间:2019-11-20 09:55:48

标签: android retrofit2

这是我的Retrofit API接口

Vec

当我使用这个

@FormUrlEncoded
@POST(/test.php)
Call<List<RetrofitModel>> function1(
@Field("type")String type,
@Field("name")String name,
@Field("sex")String sex);

问题是,即使我知道“ type1”将在那里,但每次都必须在type字段上放置相同的值(“ type1”)。


是否可以使用这样的默认字段进行POST?

mRetrofitAPI.function1("type1","toco","female").enqueue(new Callback<List<RetrofitModel>>() {
    @Override
    public void onResponse(@NonNull Call<List<RetrofitModel>> call, @NonNull Response<List<RetrofitModel>> response) { }
    @Override
    public void onFailure(@NonNull Call<List<RetrofitModel>> call, @NonNull Throwable t) { }
});

@FormUrlEncoded
@POST(/test.php)
Call<List<RetrofitModel>> function1(
@Field("type")String "type1",
@Field("name")String name,
@Field("sex")String sex);

@POST
@DefaultField("type" = "type1")
Call<List<RetrofitModel>> function1(@Field("anotherParams")String anotherParams)

1 个答案:

答案 0 :(得分:0)

您不能在响应中使用列表

使用其他这样的模型:

public class RetrofitModelResponse {
private List<RetrofitModel> retrofitModelList;

public List<RetrofitModel> getRetrofitModelList() {
    return retrofitModelList;
}

public void setRetrofitModelList(List<RetrofitModel> retrofitModelList) {
    this.retrofitModelList = retrofitModelList;
}

}

将其用作RetrofitResponse模型