服务器在成功的情况下发送响应(代码2xx):
{
"user":"User",
"age":16
}
如果失败(4xx),则会在errorBody
中发送以下Json:
{
"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的)封装Response
(我自己的Java类)。但是,我没有得到想要的东西。
@GET("/screens/home")
Single<Reponse<HomeResponse>> getHome(@Query("langCode") String langCode);
答案 0 :(得分:1)
使您的 HomeResponse 类具有您希望从成功和错误中获得的所有属性,如下所示。
class HomeResponse {
String user;
String age;
String errorMessage;
Action action;
}
动作将是您的另一堂课。 您只需在响应时检查errorMessage为null即可。
答案 1 :(得分:1)
您可以使用此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;
}
}
答案 2 :(得分:0)
对于这种形式的响应数据规则,最好创建一个基本响应类:
class BaseResponse {
String errorMessage;
Action action;
//ingore getters setters
}
并让您的其他响应类扩展它
class HomeResponse extend BaseResponse{
String user;
String age;
}
class OtherResp extend BaseResponse{
String otherField;
}