Я пишу приложение для Android, используя модифицированные и API-интерфейсы Laravel.
Моя проблема: я хочу вернуть пользователей с API, это прекрасно работает, как это выглядит в chrome: inspector, но logcat показывает: onFailure: ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY по пути $
мой интерфейс:
public interface ApiService {
@POST("register")
@FormUrlEncoded
Call<AccessToken> register(@Field("name") String name, @Field("email") String email, @Field("password") String password);
@POST("login")
@FormUrlEncoded
Call<AccessToken> login(@Field("username") String username, @Field("password") String password);
@GET("users")
Call<UserResponse> users();
}
Мой класс ответа
import java.util.List;
public class UserResponse {
List<User> data;
public List<User> getData() {
return data;
}
Мой пользователь Модель
public class User {
int id;
String name;
String email;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
}
И мой вызов API:
@OnClick(R.id.btn_get_user)
void getUsers() {
call = service.users();
call.enqueue(new Callback<UserResponse>() {
@Override
public void onResponse(Call<UserResponse> call, Response<UserResponse> response) {
Log.w(TAG, "onResponse: " + response);
if (response.isSuccessful()) {
username.setText(response.body().getData().get(0).getName());
} else {
startActivity(new Intent(GameActivity.this, LoginActivity.class));
finish();
tokenManager.deleteToken();
}
}
@Override
public void onFailure(Call<UserResponse> call, Throwable t) {
Log.w(TAG, "onFailure: " + t.getMessage());
}
});
}
Надеюсь, вы сможете мне помочь.
Спасибо!