我正在使用retrofit与网络服务进行通信。服务器返回包含success
(布尔值)的响应JSON,如果success
为假,则响应还包含message
(字符串)。但是,如果success
为真,则响应将包含请求结果,例如List<>用户或单个用户或其他用户,具体取决于请求。
public class User {
public String fullname,phone;
}
改装API:
public interface DemoAPI {
@GET("/users/{id}")
void getUserInformation(@Path("id") int userID, Callback<User> callback);
@FormUrlEncoded
@POST("/login")
void login(@Field("username") String username, @Field("password") String password,Callback<??> callback);
}
问题是,如果我想要做什么,例如,记录用户并返回他的User
信息?然后回调应包括用户对象和success
+ message
值(如果需要,则为消息),但我不能将它们放在单个User
内,因为有些请求会返回{ {1}}。
答案 0 :(得分:1)
我看到它已经解决但我已经写完了所以我想我会把它作为一个视觉示例发布。
您需要创建一个Response类来处理不同类型的请求响应。
对于您的登录,您可能会有类似
的内容public class LoginResponse {
public Boolean success;
public String message;
public User user;
}
在success
为真的情况下,将分配User对象,但如果success
为false,则将设置消息,并且用户对象将为null。
您的登录休息界面将变为类似
@FormUrlEncoded
@POST("/login")
void login(@Field("username") String username, @Field("password") String password, Callback<LoginResponse> callback);
然后,您仍然可以按原样使用模型User对象而无需更改它。您还可以根据需要为不同的休息接口创建更多*响应类。