java - 响应代码 422 转到 onFailure 方法

标签 java android json laravel retrofit2

我正在尝试发送带有改造的注册请求,并且在创建用户成功时它可以完美地工作。但是,当出现错误时,它会从 onResponse 跳转到 onFailure,因此我无法处理从服务器抛出的错误。它们都返回一个名为“message”的 Json 对象。我尝试使用 postman ,它响应正确,但是当我尝试使用 android 执行此操作时,显示成功消息,没有任何问题,但没有显示错误。为什么会出现onFailure?我看到了几个主题,他们处理了 onResponse 方法上的错误,但我的问题是,当根本没有错误时,该方法不会被调用,而是直接转移到 onFailure。

我的 Activity :

                    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

最佳答案

好吧,我查看了 throwable,发现我设置的 header 是错误的,并且它返回了一个非 Json 响应。所以我改变了标题

@Headers("Content-Type: application/json")

@Headers("Accept: application/json")

关于java - 响应代码 422 转到 onFailure 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61888453/

相关文章:

json - 在JSON中登录为JSON

android - 从内部存储中读取 JSON 文件的内容

java - JPanel 位于另一个 JPanel 内 : Swing

java - 带下划线的反斜杠 IntelliJ

java - "public"和 "public final"是接口(interface)字段的冗余吗?

javascript - Android Webview 不加载 javascript 注入(inject)的图像

Java Derby 使用点用户名创建数据库

java - Android 检索手机联系人查询需要很长时间

android - 应用程序启动时要添加到主 Activity 的第一个 fragment

python - Pandas:从 JSON 文件检索嵌套数据