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

Bil*_*han 0 android http crud retrofit2

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

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

我使用了所有类型的电子邮件验证,以便仅在电子邮件有效时提交表单。我无法理解这个问题。

这是我的api供您参考:

**http://ec2-54-201-213-169.us-west-2.compute.amazonaws.com:9000/api/v1/auth/signup**
Run Code Online (Sandbox Code Playgroud)

这是我的改造 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

    );
Run Code Online (Sandbox Code Playgroud)

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);
            }
        });
Run Code Online (Sandbox Code Playgroud)

我的默认响应模型:

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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Kis*_*rya 5

这里 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

    );
Run Code Online (Sandbox Code Playgroud)

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

.signup(firstName, lastName, email, password, confirmPassword, userId);
Run Code Online (Sandbox Code Playgroud)

尝试正确的顺序。