Я пытаюсь сначала использовать Retrofit, чтобы получить данные для курса. Но я понял, что моя программа переходит к опции «onFailure».
СООБЩЕНИЕ ОБ ОШИБКЕ:
2020-03-07 18: 54: 04.499 17756-17756 / com. example.apirequest I / MainActivity: java .lang.IllegalStateException: ожидаемый BEGIN_OBJECT, но был BEGIN_ARRAY в строке 1 пути 2 столбца $
В основном я пытаюсь сначала получить только "launch_year" из API https://api.spacexdata.com/v3/launches/
Может ли кто-нибудь помочь мне выяснить причину, по которой я не могу понять это правильно?
В классе я добавил:
implementation 'com.squareup.retrofit2:retrofit:2.0.0-beta4'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.squareup.retrofit2:converter-gson:2.0.0-beta4'
Мои коды ниже:
MainActivity:
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Retrofit retrofit = new Retrofit.Builder().
baseUrl(APIService.urlBase)
.addConverterFactory(GsonConverterFactory.create()).
build();
APIService service = retrofit.create(APIService.class);
Call<rocketCatalog> requestModels = service.listCaralog();
requestModels.enqueue(new Callback<rocketCatalog>() {
@Override
public void onResponse(Call<rocketCatalog> call, Response<rocketCatalog> response) {
rocketCatalog catalog = response.body();
for (Rockets rocket : catalog.rocket){
Log.i(TAG,String.format("%s",rocket.getLaunch_date()));
}
}
@Override
public void onFailure(Call<rocketCatalog> call, Throwable t) {
Log.i(TAG,String.format("============= Failure =============="));
}
});
LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this);
}
}
APIService:
public interface APIService {
public static final String urlBase = "https://api.spacexdata.com/v3/";
@GET("launches")
Call<rocketCatalog> listCaralog();
}
rocketКаталог:
public class rocketCatalog {
public List<Rockets> rocket;
public List<Rockets> getRocket() {
return rocket;
}
public void setRocket(List<Rockets> rocket) {
this.rocket = rocket;
}
}
Ракеты:
public class Rockets {
String launch_date;
public String getLaunch_date() {
return launch_date;
}
public void setLaunch_date(String launch_date) {
this.launch_date = launch_date;
}
}