- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
JSON
当成功代码== 200
{
"data": {
"user": {
"id": 8,
"name": "soleekuser",
"email": "soleekuser@gmail.com",
"job_title": "back end developer",
"active": 1,
"profile_pic": "http://52.174.22.188/soleekappapi/public/storage/profile_pics/Capture_1544361563.jpeg",
"created_at": "2018-12-09 13:20:37"
},
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJzdWIiOjgsImlzcyI6Imh0dHA6Ly81Mi4xNzQuMjIuMTg4L3NvbGVla2FwcGFwaS9wdWJsaWMvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNTQ0NjA1MDQ3LCJleHAiOjE1NDU4MTQ2NDcsIm5iZiI6MTU0NDYwNTA0NywianRpIjoiQk1sWTJ5NlVma043V0VhayJ9.npPbsHtV7G65jauwxltyvqS_xP7TmJetP9bTfTd9GB8"
},
"message": "Login Successfully",
"error": null
}
当我尝试使用错误的凭据(电子邮件或密码)进行身份验证时响应代码 == 400(或任何其他非 200 代码)
{
"message": "invalid username or password",
"error": "invalid username or password"
}
模型类
public class Employee implements Serializable {
@SerializedName("data")
@Expose
private Data data;
@SerializedName("message")
@Expose
private String message;
@SerializedName("error")
@Expose
private String error;
public Employee() {
}
public Employee(Data data, String message, String error) {
this.message = message;
this.error = error;
this.data = data;
}
// Getters & Setters
}
当缺少“数据”对象时,我应该怎么做才能将返回的 JSON 转换为模型类? (响应代码!= 200)
我认为即使缺少属性,Retrofit 也会自动将响应 json 转换为模型!
更重要的是
call.enqueue(new Callback<Employee>() {
@Override
public void onResponse(Call<Employee> call, Response<Employee> response) {
Log.e(TAG_FRAG_LOGIN, "Response code -> " + response.code() + " " + response.message() + " ");
if (response.code() == 200) {
if (response.body() != null) {
// do stuff
// Everything works just fine when response code == 200, the body is not null.
}
} else if (response.code() != 200){
Log.d(TAG_FRAG_LOGIN, "Response code ------> " + response.code() + " " + response.message() + " " + call.request().toString());
if (response.body() != null) {
// do stuff
// When response code != 200 the (response.body()) is always null
}
}
为什么当响应码 != 200 时 respnse.body() 总是 null?
最佳答案
尝试制定处理错误消息的通用方法..像这样..
/**
* this method used method response give error.
*
* @param context
* @param response
*/
public static void getResponseErrorMessage(Context context, String str, Response response) {
if (response.code() == 401 || response.code() == 400) {
try {
Gson gson = new Gson();
CommonErrorModel errorModel = gson.fromJson(response.errorBody().string(), CommonErrorModel.class);
showAlertDialog(context, str, errorModel.message == null ? context.getString(R.string.something_went_wrong) : errorModel.message);
} catch (IOException e) {
e.printStackTrace();
}
} else if (response.code() == 500) {
showAlertDialogMessage(context, str, context.getString(R.string.something_went_wrong));
} else {
showAlertDialogMessage(context, str, context.getString(R.string.something_went_wrong));
}
}
此方法调用了 api response.. onResponse() 方法。
if (response != null && response.isSuccessful() && response.body() != null) {
}
else{
getResponseErrorMessage(mContext, getString(R.string.app_name), response);
}
也像这样制作错误消息 pojo 类..
public class CommonErrorModel {
@SerializedName("status")
public int status;
@SerializedName("message")
public String message;
关于java - 安卓改造 : Can't convert the returned JSON reponse to the specified model class when response code ! = 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53739703/
当我创建自定义调用类时,我无法返回响应,因为响应类是最终的。有什么解决办法吗? public class TestCall implements Call { String fileType;
我正在用 Angular 制作一个http拦截器,我想从$httpProvider拦截器的response抛出错误。 根据文档: response: interceptors get called w
我有 2 个 mysql 数据库,我想为第二个数据库 (analysis_db) 创建一个新模型,但是在运行 makemigrations 之后,它显示“未检测到任何更改”。这是我的代码 在 sett
只是为了简要介绍一下背景,我之所以要跟踪这个特定的颠覆古怪之处,是因为我发现它对我们的新 Maven 设置(特别是发布插件)进行了故障排除。 release:prepare给了我埋在堆栈跟踪中的相同错
我已经用 golang 编写了以下简单的 udp 服务器/客户端。该应用程序将当前时间发送到指定的 ipv6 链路本地地址。接收方发回一个小回复。仅当回复的发送端口与请求的目标端口相同时才有效。 Wi
我正在尝试缓存 ActionResult。在特定的 ActionResult 中,我将一些数据写入 cookie。输出缓存在该操作结果中不起作用。它适用于我不使用 Response.Cookies 的
JSON 当成功代码== 200 { "data": { "user": { "id": 8, "name": "soleekuser", "e
我是一名优秀的程序员,十分优秀!