android - 使用改造处理错误
问题描述
我使用改造调用 API 来注册用户,当用户输入已经存在或格式错误的电话号码或电子邮件时,我想处理 401 错误。
Gson gson = new Gson();
Type type = new TypeToken<ErrorResponse>() {}.getType();
ErrorResponse errorResponse = gson.fromJson(response.errorBody().charStream(),type);
Log.d("err", errorResponse.getMessage().getPhone().get(0))
以上是我的代码,它只显示像电话这样的单个实体。我如何从 json 响应中获取电话和电子邮件的错误消息
{
"status": false,
"message": {
"email": [
"The email has already been taken."
],
"phone_no": [
"The phone no has already been taken."
]
}
}
这是 Json 响应
public class ErrorResponse {
@SerializedName("success")
@Expose
private Boolean success;
@SerializedName("message")
@Expose
private Message message;
public Boolean getSuccess() {
return success;
}
public void setSuccess(Boolean success) {
this.success = success;
}
public Message getMessage() {
return message;
}
public void setMessage(Message message) {
this.message = message;
}
}
然后错误响应
解决方案
当您从服务器发回 json 时,我会将其更改为以下格式。这将允许使用 Gson 或其他 json 转换器进行非常简单的转换。
这将为您提供一个ErrorResponse对象,该对象将具有一个成功布尔值以及一个List ,该 List将包含您在消息数组中返回的任何内容。如果您愿意,也可以将其称为错误。您只需在ErrorResponse类中更新您的注释。
{
"success": false,
"messages": [{
"type": "email",
"message": "The email has already been taken."
}, {
"type": "phone_no",
"message": "The phone no has already been taken."
}]
}
然后我将创建以下 java 类:
错误响应类
public class ErrorResponse {
@SerializedName("status")
@Expose
private boolean status;
@SerializedName("message")
@Expose
private List<Message> messages;
...
}
消息类
public final class Message {
@SerializedName("type")
@Expose
private String type;
@SerializedName("message")
@Expose
private String messages;
...
}
推荐阅读
- python - 如何使用 np.vectorize?
- javascript - 没有托管的 Webpack 5 模块联合
- python - PyCharm python文件只包含一行而不是普通编辑器
- c++ - 将节点添加到 bst 会导致值未定义
- elasticsearch - 使用 REST 搜索多个值
- python - 我似乎无法在输入框中输入
- python - 如果我不使用 Generator 或 RandomState,如何在 Numpy 中生成随机数?
- python - 功能无法构建并出现错误我不明白
- python - 获取要与 Gtk 和 python 一起使用的进程的图标(如在 gnome-system-monitor 中)
- python - model.evaluate() 如何在 tensorflow 中工作?