在我的应用程序中,我想对请求使用 Retrofit2 库,我想要设置动态响应模型,我不希望将模型设置为interface
模型!
例如:
我的界面方法是:
@GET("api/server?mode=supports")
Call<SupportListResponse> getSupport_List(@Header("jwt") String token);
我不希望将SupportListResponse
设置为Call<>
,我希望从Activity
/ Fragment
类设置此模型动态!
如何设置一般模型类而不是 SupportListResponse
?
我怎么能?
答案 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);
希望这会有所帮助