【发布时间】:2020-09-05 08:45:18
【问题描述】:
我正在尝试发送一个带有改造的注册请求,它在创建用户成功时完美运行。但是,当出现错误时,它会从onResponse 跳转到onFailure,所以我无法处理从我的服务器抛出的错误。他们都返回一个名为“消息”的Json object。我尝试使用邮递员,它响应正确,但是当我尝试使用 android 时,成功的消息显示没有任何问题,但没有错误。为什么会发生onFailure?我看到了几个主题,他们在 onResponse 方法上处理了错误,但我的问题是,当根本出现错误时没有调用该方法并直接转到 onFailure。
我的活动:
RegisterService registerService = BaseServerRetrofit.getRetrofitInstance().create(RegisterService.class);
RegisterCredential registerCredential = new RegisterCredential(username.getText().toString(),email.getText().toString()
,password.getText().toString(),password.getText().toString());
Call<Message> call = registerService.getMessageFromServer(registerCredential);
call.enqueue(new Callback<Message>() {
@Override
public void onResponse(Call<Message> call, Response<Message> response) {
if(response.code() == 422)
Log.e("400",response.errorBody().toString());
reg_note.setText(response.body().getMessage());
}
@Override
public void onFailure(Call<Message> call, Throwable t) {
reg_note.setText("error");
}
});
注册服务
public interface RegisterService {
String FEED = "/public/api/auth/signup";
@Headers("Content-Type: application/json")
@POST(FEED)
Call<Message> getMessageFromServer(@Body RegisterCredential registerCredential);
}
不知道有没有必要告诉大家,成功时响应码是201,失败时是422。
编辑 1:
我发现异常:使用 JsonReader.setLenient(true) 在第 1 行第 1 列路径 $ 接受格式错误的 JSON
【问题讨论】:
-
422 是一个错误响应代码,所以它应该算作失败
-
@apokryfos 其他主题询问了 422 响应代码,其他主题在 onResponse 方法中回答并获得了大约 60 票。我不知道。如果是这样,我应该如何得到 json 错误?
-
我真的不知道改造是怎么做的,但我希望 422 算作失败。检查投掷物中的内容,以防有什么可以挽救的东西
标签: java android json laravel retrofit2