简体   繁体   中英

How to get error response from retrofit android

By This code, I am not able to get the error response as if I use same email id twice then I am getting the error response in postman but in my application, I am not getting the error response So can you please help me to get out of this

My Interface

public interface SignupAPI {
@FormUrlEncoded
@POST("users")
Call<ResponseBody> createUser(
    @Field("email") String email,
    @Field("password") String password,
    @Field("role") String role
);
}

My Java Code

public class SignupClient {
private static final String BASE_URL = "http://74.207.233.160/api/v1/";
private static SignupClient mInstance;
private Retrofit retrofit;
private SignupClient(){
    retrofit = new Retrofit.Builder().baseUrl(BASE_URL).addConverterFactory(GsonConverterFactory.create()).build();
}
public static synchronized SignupClient getmInstance(){
    if (mInstance == null){
            mInstance = new SignupClient();
    }
    return mInstance;
}
public SignupAPI getApi(){
    return retrofit.create(SignupAPI.class);
}
}

My Activity

Call<ResponseBody> call = SignupClient.getmInstance().getApi().createUser(email, password,role);
call.enqueue(new Callback<ResponseBody>()
{
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response)
{
    if (response.isSuccessful()){
        progressBar.setVisibility(View.GONE);
        Toast.makeText(SignupActivity.this, "Account Sucessfully Created", Toast.LENGTH_SHORT).show();
    }else {
        try {
            progressBar.setVisibility(View.GONE);
            JSONObject jsonError = new 
            JSONObject(response.errorBody().string());
            Toast.makeText(SignupActivity.this, jsonError.getString("errors"),Toast.LENGTH_SHORT).show();
        } catch (JSONException e) {
            progressBar.setVisibility(View.GONE);
            e.printStackTrace();
        } catch (IOException e) {
            progressBar.setVisibility(View.GONE);
            e.printStackTrace();
        }
    }
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
    Toast.makeText(SignupActivity.this, t.getMessage(), Toast.LENGTH_SHORT).show();
}

邮差错误响应

make error pojo class..

public class Errors{

@SerializedName("email")
private List<String> email;

public void setEmail(List<String> email){
    this.email = email;
}

public List<String> getEmail(){
    return email;
}
}

make changes into response body class..

public class ResponseBody {

@SerializedName("errors")
private Errors errors;

public void setErrors(Errors errors){
    this.errors = errors;
}

public Errors getErrors(){
    return errors;
}

}

then after used into api response like

      Errors errors=response.body().getErrors();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM