Как получить код ответа и сообщение об ошибке от дооснащения 2.4.0 в Android - PullRequest
0 голосов
/ 20 ноября 2018

при регистрации я не могу получить код ответа и сообщение об ошибке, так что вы можете мне помочь?

Это мой интерфейс

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

Это класс Java

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);
}
}

Это активность при регистрации

progressBar.setVisibility(View.VISIBLE);
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();
}

Я не могу получить сообщение об ошибке и код ответа, поэтому, пожалуйста, помогите мне его получить.

Вот почтальон PostMan API

1 Ответ

0 голосов
/ 20 ноября 2018

Здесь я написал, как вы можете получить HTTP-код как из успешного ответа, так и из-за ошибки.

@Override
public void onResponse(Call<T> call, Response<T> response) {
    int statusCode = response.code(); 
}

@Override
public void onFailure(Call<T> call, Throwable t) {
    if (new Exception(t) instanceof HttpException) {
        int statusCode = ((HttpException) t).getStatusCode();
    else {
        // unknown error
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...