Я новичок в модернизации. Я пытаюсь вызвать api, используя базовый URL-адрес, но я получаю ошибку при загрузке функции. есть объект, а внутри него есть два разных массива с именем animal и birds. мне нужно вызвать этот массив из объекта и нужно загрузить в gridview адаптер. вот как я вызываю функцию в моем фрагменте.
My error.
java.lang.IllegalArgumentException: Non-body HTTP method cannot contain @Body.
for method GetDataService.getAll
Это мой JSON ответ
{
"animals": [
{
"animalName": "String",
"animalID": "integer",
}
],
"birds": [
{
"birdsId": "integer",
"birdsname": "string
}
],
"ID": "integer"
}
Вызов GET во фрагменте
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://demoapp.in/")
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(GsonConverterFactory.create())
.build();
GetDataService service = retrofit.create(GetDataService .class);
Call<TableResponse> call= service.getAll(new TableResponse());
call.enqueue(new Callback<TableResponse>() {
@Override
public void onResponse(Call<TableResponse> call, Response<TableResponse> response) {
String passKey = response.body().getPassKey();
List<Table> TableName = response.body().getTables();
String[] TableNameArray = new String[TableName.size()];
for (int i = 0; i < TableName.size(); i++) {
TableNameArray[i] = TableName.get(i).getTableName();
}
gridView.setAdapter(new TableViewAdapter(getContext(), TableNameArray));
}
@Override
public void onFailure(Call<TableResponse> call, Throwable t) {
}
});
3.TableResponse, java класс в этом f ie создается с использованием jsonschema2pojo
@SerializedName("animal")
@Expose
private List<Table> animal = null;
......
public TableResponse(){
this.animal= animal;
this.birds= birds;
this.ID = ID;
}
public List<Table> getTables() {
return tables;
}
-------
4.GetDataService. java
@GET("Animal.ashx")
Call<TableResponse> getAll(@Body TableResponse tableResponse);