Api 返回电子邮件在 android 测试中无效,但适用于 Postman

Api returning email is not valid in android testing, but works on Postman

我有一个 Api 用于将用户注册到数据库。我正在使用 Retrofit2 库来使用 Api.

寄存器 api 当我在邮递员上测试它时 returns 完美的结果但是当我在我的 android 应用程序中实现它时,它给出了电子邮件无效的错误。

我已经使用了所有类型的电子邮件验证,因此只有在电子邮件有效时才会提交表单。我无法理解这个问题。

这是我的api供您参考:

**http://ec2-54-201-213-169.us-west-2.compute.amazonaws.com:9000/api/v1/auth/signup**

这是我的 改造 Api:

@FormUrlEncoded
    @POST("auth/signup")
    Call<DefaultResponse> signup(
            @Field("userId") String userId,
            @Field("email") String email,
            @Field("firstName") String firstName,
            @Field("lastName") String lastName,
            @Field("password") String password,
            @Field("confirmPassword") String confirmPassword

    );

Api 有一个用于验证电子邮件的内置检查,当我 运行 我的应用程序时它会被触发,即使电子邮件是有效的。

这是Java实现:

 Call<DefaultResponse> call = RetrofitClient
                .getInstance()
                .getApi()
                .signup(firstName, lastName, email, password, confirmPassword, userId);
        call.enqueue(new Callback<DefaultResponse>() {
            @Override
            public void onResponse(Call<DefaultResponse> call, Response<DefaultResponse> response) {

                DefaultResponse defaultResponse = response.body();
                if (response.code() == 200) {
                    ViewUtils.showSuccessToast(RegisterActivity2.this, "Registered Successful");
                } else if (response.code() == 201) {
                    ViewUtils.showErrorToast(RegisterActivity2.this, defaultResponse.getMsg());
                }

                loader.hide();
                register_btn.setVisibility(View.VISIBLE);

            }

            @Override
            public void onFailure(Call<DefaultResponse> call, Throwable t) {
                showErrorToast(RegisterActivity2.this, t.getMessage());
                loader.hide();
                register_btn.setVisibility(View.VISIBLE);
            }
        });

我的默认响应模型:

public class DefaultResponse {
    @SerializedName("error")
    private boolean err;

    @SerializedName("message")
    private String msg;

    public DefaultResponse(boolean err, String msg) {
        this.err = err;
        this.msg = msg;
    }

    public boolean isErr() {
        return err;
    }

    public String getMsg() {
        return msg;
    }
}

这里Api结束点

signup(
            @Field("userId") String userId,
            @Field("email") String email,
            @Field("firstName") String firstName,
            @Field("lastName") String lastName,
            @Field("password") String password,
            @Field("confirmPassword") String confirmPassword

    );

数据传递顺序不正确。 API 终点期望第二个参数为电子邮件,但您传递的是姓氏

.signup(firstName, lastName, email, password, confirmPassword, userId);

尝试正确的顺序。