改造反应机构有时会出错,但有时会成功

时间:2016-08-23 14:05:26

标签: android retrofit2

我在发布一些数据时遇到了一些错误。

我的应用可以注册一个新用户,将数据寄存器发送到服务器,然后返回结果。

如果注册成功,

结果

{
   "res": "success"
}
如果注册失败,

结果

{
   "res": "customer id not found"
}

这是我发布数据的代码

Register register = new Register(nameStr, emailStr, phoneStr, passStr, rePassStr,customerIDStr );
    Call<ResultRegister> call = apiInterface.registration(register);
    call.enqueue(new Callback<ResultRegister>() {
        @Override
        public void onResponse(Call<ResultRegister> call, Response<ResultRegister> response) {
            String responseString;
            responseString = response.body().getRes();
            if(responseString.equalsIgnoreCase("success")){

                Toast.makeText(getActivity(), "Register Success", Toast.LENGTH_SHORT).show();

                Fragment fragment = new LoginFragment();
                FragmentManager fragmentManager = getFragmentManager();
                fragmentManager.beginTransaction().replace(R.id.wrap_login_container, fragment)
                        .addToBackStack(null).commit();
            }else{
                Toast.makeText(getActivity(), "Register Failed", Toast.LENGTH_SHORT).show();
            }
        }

        @Override
        public void onFailure(Call<ResultRegister> call, Throwable t) {
            t.printStackTrace();
            call.cancel();
            Toast.makeText(getActivity(), "Please check your network connection and internet permission", Toast.LENGTH_LONG).show();
        }
    });

如果寄存器返回成功,一切都很好,但如果寄存器返回错误,则出现空指针异常,指向此行:

responseString = response.body().getRes();

修改

这是我的ResultRegister类

public class ResultRegister {
@SerializedName("res")
String res;

public String getRes() {
    return res;
}

public void setRes(String res) {
    this.res = res;
}

}

任何解决方案??

1 个答案:

答案 0 :(得分:0)

我已经解决了我的问题。主要问题是当寄存器失败时,错误代码为500(内部错误服务器)。因此response.body()null