Retrofit2 and Swagger PetStore Запрос пользователя

уважаемые знатоки, у меня возникла проблема с подключением к тестовой API Swagger. Суть проблемы в том что при запросе к https://petstore.swagger.io/v2/ с использованием пути user{username} у меня возникает ошибка, а именно отрабатывает только onFailure , а если неправильно задаю строку подключения то выдает ошибку 404

Скрин эмулятора. введите сюда описание изображения

Месседж в дебаге: введите сюда описание изображения

Прошу объясните в чем может быть ошибка, можно еще и показать конечно.

MainActivity

private TextView idText,usernametext,firstnameText,lastnameText,emailText,passwordText,phoneText,userstatusText;
String url = "https://petstore.swagger.io/v2/";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    idText = findViewById(R.id.id);
    usernametext = findViewById(R.id.username);
    firstnameText = findViewById(R.id.firstname);
    lastnameText = findViewById(R.id.lastname);
    emailText = findViewById(R.id.email);
    passwordText = findViewById(R.id.password);
    phoneText = findViewById(R.id.phone);
    userstatusText = findViewById(R.id.userstatus);
    GetUser getUser = new GetUser();
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(url)
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    JsonPlaceHolderApi jsonPlaceHolderApi = retrofit.create(JsonPlaceHolderApi.class);

    Call<List<GetUser>> call = jsonPlaceHolderApi.getUserPost("Test");
    call.enqueue(new Callback<List<GetUser>>() {
        @Override
        public void onResponse(Call<List<GetUser>> call, Response<List<GetUser>> response) {
            if(!response.isSuccessful()){
                idText.setText("Code "+response.code());
                return;
            }
            idText.setText(getUser.getUserid());
            usernametext.setText(getUser.getUsername());
            firstnameText.setText(getUser.getFirstname());
            lastnameText.setText(getUser.getLastname());
            emailText.setText(getUser.getEmail());
            passwordText.setText(getUser.getPassword());
            phoneText.setText(getUser.getPhone());
            usernametext.setText(getUser.getUserstatus());
        }
        @Override
        public void onFailure(Call<List<GetUser>> call, Throwable t) {
            usernametext.setText(url+"user/Test");
            idText.setText(t.getStackTrace().toString());
        }
    });
}

Класс с гетерами

public class GetUser {
private int userid;
private int id;
private String title;
private String body;
private String username;
private String firstname;
private String lastname;
private String email;
private String password;
private String phone;
private int userstatus;
private String message;

public String getMessage(){
    return message;
}

public int getUserid() {
    return userid;
}

public String getUsername() {
    return username;
}

public String getFirstname() {
    return firstname;
}

public String getLastname() {
    return lastname;
}

public String getEmail() {
    return email;
}

public String getPassword() {
    return password;
}

public String getPhone() {
    return phone;
}

public int getUserstatus() {
    return userstatus;
}
}

Интерфейс

public interface JsonPlaceHolderApi {
@GET("user/{username}")
Call<List<GetUser>> getUserPost(@Path("username") String username);
//Call<List<Post>> getPost();
  }

Ответы (1 шт):

Автор решения: Sergei Buvaka

Вы не правильно парсите ответ от сервера. У вас в запросе ожидается List<GetUser>, но сервер вероятно вам возвращает объект внутри которого лежит этот список.

Вам надо взять JSON и в любом онлайн конверторе спарсить в нужный ответ. Можно так же для студии скачать плагин для конвертации.

Более точно сказать трудно, т.к. надо видеть ответ и ваши модельки, но проблема точно в том, что приложение ожидает не тот ответ который приходит от сервера.

→ Ссылка