【发布时间】:2019-03-15 16:31:20
【问题描述】:
当我使用错误的登录信息(使用邮递员)时,我的 API 会返回此信息:
{
"error": {
"statusCode": 401,
"name": "Error",
"message": "login failed",
"code": "LOGIN_FAILED",
"stack": "Error: login failed\n at ...path..."
}
}
我正在使用这种方法来获取响应消息:
private void handleResponse(retrofit2.Response<Response> response) {
if (response.isSuccessful()) {
emailField.setText(null);
passwordField.setText(null);
Intent intent = new Intent(getActivity(), MainActivity.class);
startActivity(intent);
} else {
try {
showSnackBarMessage(response.errorBody().string());
} catch (Exception e) {
showSnackBarMessage(e.getMessage());
}
}
}
并且输出(快餐栏显示的内容)与邮递员返回的相同。
handleresponse 参数retrofit2.Response<Response> response 由retrofit2 Response 和我自己的<Response> 类组成,如下所示:
public class Response {
@SerializedName("message")
@Expose
private String message;
public String getMessage() {
return message;
}
}
我怎样才能让message 只显示在snackbar 中?
我尝试了以下代码,但只得到No value for message。
try {
JSONObject jObjError = new JSONObject(response.errorBody().string());
Toast.makeText(getContext(), jObjError.getString("message"), Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getContext(), e.getMessage(), Toast.LENGTH_LONG).show();
}
【问题讨论】:
标签: java json rest observable retrofit2