Ошибка метода Retrofit GET HTTP-метод без тела не может содержать @Body - PullRequest
0 голосов
/ 09 мая 2020

Я новичок в модернизации. Я пытаюсь вызвать api, используя базовый URL-адрес, но я получаю ошибку при загрузке функции. есть объект, а внутри него есть два разных массива с именем animal и birds. мне нужно вызвать этот массив из объекта и нужно загрузить в gridview адаптер. вот как я вызываю функцию в моем фрагменте.

 My error.

java.lang.IllegalArgumentException: Non-body HTTP method cannot contain @Body.
    for method GetDataService.getAll
  1. Это мой JSON ответ

    {
       "animals": [
       {
          "animalName": "String",
          "animalID": "integer",
    
    }
    
     ],
        "birds": [
      {
        "birdsId": "integer",
        "birdsname": "string
     }
    
    ],
    
     "ID": "integer"
    }
    
  2. Вызов 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);
...