服务器在成功的情况下发送响应(代码2xx):
{
"user":"User",
"age":16
}
如果失败(4xx),以下Json将在errorBody
中发送:
{
"errorMessage":"Server is not working",
"action":{
...
}
}
如何配置Retrofit以便根据成功/失败自动转换响应。注意:我使用的是JavaRx v2.2.0和Retrofit v2.4.0
我调用API调用的方法如下:
@GET("/screens/home")
Single<HomeResponse> getHome(@Query("langCode") String langCode);
我试图用HomeResponse
(Retrofit's)封装Response
(我自己的java类)。但是,我没有得到我想要的。
@GET("/screens/home")
Single<Reponse<HomeResponse>> getHome(@Query("langCode") String langCode);
使用您想要的所有属性创建HomeResponse类,如下所示。
class HomeResponse {
String user;
String age;
String errorMessage;
Action action;
}
行动将是你的另一课。您只需在响应时检查errorMessage是否为null。
你可以使用这个link制作pojo类,在json中写入成功和错误响应字段,你要合并json并制作一个pojo类
你可以通过status
检查响应,或者确定这是error
响应的东西
编辑
看到这个
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
public class MyApiResponse {
@SerializedName("user")
@Expose
private String user;
@SerializedName("age")
@Expose
private Integer age;
@SerializedName("errorMessage")
@Expose
private String errorMessage;
@SerializedName("action")
@Expose
private Action action;
public String getUser() {
return user;
}
public void setUser(String user) {
this.user = user;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
public String getErrorMessage() {
return errorMessage;
}
public void setErrorMessage(String errorMessage) {
this.errorMessage = errorMessage;
}
public Action getAction() {
return action;
}
public void setAction(Action action) {
this.action = action;
}
}
对于这种形式的响应数据规则,最好创建一个基本响应类:
class BaseResponse {
String errorMessage;
Action action;
//ingore getters setters
}
并让你的其他响应类扩展它
class HomeResponse extend BaseResponse{
String user;
String age;
}
class OtherResp extend BaseResponse{
String otherField;
}