如何将动态模型设置为Retrofit请求?

时间:2018-06-14 08:02:35

标签: java android retrofit2

在我的应用程序中,我想对请求使用 Retrofit2 库,我想要设置动态响应模型,我不希望将模型设置为interface模型!
例如: 我的界面方法是:

@GET("api/server?mode=supports")
Call<SupportListResponse> getSupport_List(@Header("jwt") String token);

我不希望将SupportListResponse设置为Call<>,我希望从Activity / Fragment类设置此模型动态

如何设置一般模型而不是 SupportListResponse

我怎么能?

2 个答案:

答案 0 :(得分:1)

您可以使用通用方法:

@GET("api/server?mode=supports")
<T> Call<T> getSupport_List(@Header("jwt") String token);

https://docs.oracle.com/javase/tutorial/extra/generics/methods.html

<强>更新 根据{{​​3}},您不能使用泛型,因为改造需要知道返回类型。

您可以尝试将结果指定为okhttp3.ResponseBody

@GET("api/server?mode=supports")
Call<ResponseBody> getSupport_List(@Header("jwt") String token);

并在您的代码中解析它。 您可以了解它在改造中的表现:

对于json,使用谷歌的Gson: https://github.com/square/retrofit/issues/2012

for protobuf,使用Google的Protobuf: https://github.com/square/retrofit/blob/8b8887c139c4cf13072499bafe8bb94e06903ea2/retrofit-converters/gson/src/main/java/retrofit2/converter/gson/GsonResponseBodyConverter.java#L36

答案 1 :(得分:0)

使用Object代替

例如:

@GET("api/server?mode=supports")
Call<Object> getSupport_List(@Header("jwt") String token);

希望这会有所帮助