{
"error": {
"message": "Generic error","code": 13000
}
}
现在,使用以下命令后如何访问原始响应正文:
.addConverterFactory(GsonConverterFactory.create(gson))
我试过了:
response.raw().body().string()
但是我得到:
java.lang.IllegalStateException: Cannot read raw response body of a converted body.
我已经实现了一个通用的APICallback类,该类应“阻止”成功并引发APIError事件:
abstract class APICallback<T> implements Callback<T> {
abstract void onSuccess(Call<T> call,T result);
@Override
public void onResponse(Call<T> call,Response<T> response) {
if (response.body() != null) {
if (response.body() instanceof APIError) {
// this is not working
} else {
onSuccess(call,response.body());
}
} else {
apiError = new APIError("UnkNown error");
bus.post(new APIErrorEvent(apiError));
}
}
@Override
public void onFailure(@NonNull Call<T> call,@NonNull Throwable t) {
String message = t.getLocalizedMessage() != null ? t.getLocalizedMessage() : "UnkNown error";
apiError = new APIError(message);
bus.post(new APIErrorEvent(apiError,source));
}
}
最佳答案
对于错误响应,您必须采用response.errorBody()而不是response.body()
abstract class APICallback<T> implements Callback<T> {
abstract void onSuccess(Call<T> call,T result);
@Override
public void onResponse(Call<T> call,Response<T> response) {
if (response.body() != null) {
if (response.body() instanceof APIError) {
// this is not working
} else {
onSuccess(call,response.body());
}
} else {
apiError = new APIError("UnkNown error");
bus.post(new APIErrorEvent(apiError));
}
}
@Override
public void onFailure(@NonNull Call<T> call,@NonNull Throwable t) {
String message = t.getLocalizedMessage() != null ? t.getLocalizedMessage() : "UnkNown error";
apiError = new APIError(message);
bus.post(new APIErrorEvent(apiError,source));
}
}
改成
abstract class APICallback<T> implements Callback<T> {
abstract void onSuccess(Call<T> call,Response<T> response) {
if (response.isSuccessful()) {
if (response.body() != null) {
onSuccess(call,response.body());
}
} else {
if (response.errorBody() != null) {
if (response.errorBody() instanceof APIError) {
}
} else {
apiError = new APIError("UnkNown error");
bus.post(new APIErrorEvent(apiError));
}
}
}
@Override
public void onFailure(@NonNull Call<T> call,source));
}
}
原文地址:https://www.jb51.cc/android/531387.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。