gpt4 book ai didi

java - 使用 Retrofit 和 Observable 解析 REST 响应消息

转载 作者:太空宇宙 更新时间:2023-11-04 09:47:58 26 4
gpt4 key购买 nike

当我使用错误的登录信息(使用 postman )时,我的 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());
}
}
}

输出( snackbar 显示的内容)与 postman 返回的内容相同。

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();
}

最佳答案

根据您的json,响应错误主体是一个带有字段error的对象,其中包含字段message。这意味着您首先需要获取错误对象,然后获取消息:

JSONObject jObjError = new JSONObject(response.errorBody().string()).getJSONObject("error");
Toast.makeText(getContext(), jObjError.getString("message"), Toast.LENGTH_LONG).show();

关于java - 使用 Retrofit 和 Observable 解析 REST 响应消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55186966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com