gpt4 book ai didi

javascript - 改造 + GSON = 输入 "onFailure"

转载 作者:行者123 更新时间:2023-12-02 21:32:41 25 4
gpt4 key购买 nike

我尝试首先使用 Retrofit 将数据获取到类(class)。但我发现我的程序将进入“onFailure”选项。

错误消息:

2020-03-07 18:54:04.499 17756-17756/com.example.apirequest I/MainActivity: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $

基本上,我试图首先从 API https://api.spacexdata.com/v3/launches/ 获取“launch_year”

有人可以帮我找出我无法正确执行的原因吗?

在年级我添加了:

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'

我的代码如下:

主要 Activity :

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

}
}

API服务:

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

最佳答案

您的端点返回一个 List,因此您的响应需要一个 List 类型。

public static final String urlBase = "https://api.spacexdata.com/v3/";

@GET("launches")
Call<List<Rockets>> listCaralog();

还要确保您的 Rockets 类中的字段 launch_date 存在于响应中。

关于javascript - 改造 + GSON = 输入 "onFailure",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60582277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com