我目前的成功回应是:
{"status":"success","message":"msg here"}
代码为200
我的错误回答是:
{"status":"failure","message":"There was a validation error","errors":{"shippingAddress":{"phoneNumber":"Please enter a valid phone number"}}}
代码为400
我的问题是下面的代码不工作,因为它总是进入onFailure()
if (response.isSuccessful()) {
// do something
} else if (response.code() == 400) {
Gson gson = new Gson();
ErrorPhone message = null;
if (response.errorBody() != null) {
message = gson.fromJson(response.errorBody().charStream(), ErrorPhone.class);
}
if (message != null) {
Toast.makeText(context, message.getErrors().getShippingAddress().getPhoneNumber(), Toast.LENGTH_LONG).show();
} else {
String errors = "";
try {
JSONObject jObjError = new JSONObject(response.errorBody().string());
errors = jObjError.getJSONObject("errors").getJSONObject("shippingAddress").getString("phoneNumber");
} catch (JSONException | IOException e) {
e.printStackTrace();
}
if (!errors.equals("")) {
Toast.makeText(context, errors, Toast.LENGTH_LONG).show();
} else {
Toast.makeText(context, response.message(), Toast.LENGTH_LONG).show();
}
}
}
并且在onFailure中,我无法侦听errorBody来处理响应
1条答案
按热度按时间nc1teljy1#
使用名为
onResponse
的Retrofit接口,并将代码放在那里。由于Retrofit使用两种不同的callback
方法来处理网络请求的两种可能结果:失败或成功请求。Retrofit将根据结果调用相应的回调方法。如果请求成功,Retrofit还将向您传递服务器的响应。有关更多信息,请查看此链接:https://square.github.io/retrofit/2.x/retrofit/retrofit2/Callback.html和https://futurestud.io/tutorials/java-basics-for-retrofit-callbacks,这将帮助您更深入地了解
Call-backs
改造