Retrofit response body 有时报错,有时成功
Retrofit response body sometimes error, but sometimes success
我在 post 一些数据时遇到一些错误。
我的应用程序可以注册一个新用户,将注册数据发送到服务器,然后 return 结果。
注册成功后的结果
{
"res": "success"
}
注册失败的结果
{
"res": "customer id not found"
}
这是我的 post 数据
代码
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();
}
});
如果注册return成功,一切都很好,但是如果注册return错误,出现空指针异常,指向这一行:
responseString = response.body().getRes();
编辑
这是我的 ResultRegister class
public class ResultRegister {
@SerializedName("res")
String res;
public String getRes() {
return res;
}
public void setRes(String res) {
this.res = res;
}
}
有解决办法吗??
我的问题已经解决了。主要问题是当注册失败时,错误代码是500(内部错误服务器)。所以 response.body()
是 null
.
我在 post 一些数据时遇到一些错误。
我的应用程序可以注册一个新用户,将注册数据发送到服务器,然后 return 结果。
注册成功后的结果
{
"res": "success"
}
注册失败的结果
{
"res": "customer id not found"
}
这是我的 post 数据
代码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();
}
});
如果注册return成功,一切都很好,但是如果注册return错误,出现空指针异常,指向这一行:
responseString = response.body().getRes();
编辑
这是我的 ResultRegister class
public class ResultRegister {
@SerializedName("res")
String res;
public String getRes() {
return res;
}
public void setRes(String res) {
this.res = res;
}
}
有解决办法吗??
我的问题已经解决了。主要问题是当注册失败时,错误代码是500(内部错误服务器)。所以 response.body()
是 null
.