Подтвердить что ты не робот

Не найдено аннотации дооснащения. (параметр # 1)

Я хочу получить RSS-код из URL-адреса с Retrofit, и если я введю url staticly в аннотации get, все будет в порядке, но с динамическим url я получаю сообщение об ошибке.

Мой интерфейс:

public interface AllNewsService {
@GET("/fa/rss/{url}")
void getRss( @Path("url") String nGroup ,  Callback<AllNewsRss> callback);}

И вызов метода getRss:

DataGetter dg = new DataGetter();
    dg.get().getRss("allnews" ,new Callback<AllNewsRss>() {
        @Override
        public void success(AllNewsRss allNewsRss, Response response) {
            Log.d(TAG,"success");
        }

        @Override
        public void failure(RetrofitError error) {
            Log.d("*********",error.toString());
        }

Я получаю следующую ошибку:

retrofit.RetrofitError: AllNewsService.getRss: No Retrofit annotation found. (parameter #1)

Примечание: Я добавил строку ниже proguard.cfg, но она не работает

-keep class retrofit.** { *; }
4b9b3361

Ответ 1

Дополнение к ответу Destil

Убедитесь, что parameters, который вы передаете в retrofit interface methods(i.e callbacks, headers, body ), относятся только к retrofit package. например Не пользовательские обратные вызовы, которые вы хотите по своему усмотрению.

Ответ 2

Моя проблема заключалась в том, что я имел аннотацию @POST, но забыл аннотацию @Body для параметра.

Ответ 3

Также убедитесь, что вы добавляете @Query или @Field для всех параметров, в зависимости от того, вы выдаете GET/POST.

например:

@GET("/api/Books/GetAll")
void GetRecentBooks(@Query int Offset, Callback<List<Book>> cb);

Ответ 4

У меня была аннотация @Post но я забыл аннотации @Field и @FormUrlEncoded

Ответ 5

Вероятно, вы сначала забыли инициализировать адаптер, как упоминалось в retrofit api:

RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint("https://api.github.com")
.build();
GitHubService service = restAdapter.create(GitHubService.class);

http://square.github.io/retrofit/

Ответ 6

Пожалуйста, проверьте класс Path, который вы используете, и убедитесь, что пакет retrofit2.http.Path вместо org.simpleframework.xml.Path. Это обычная ошибка аннотации дооснащения.

Ответ 7

В моем случае я просто забыл удалить параметр Callback для вызова службы, когда я начинаю использовать модификацию 2. Убедитесь, что вы не сделали глупую ошибку, которую я сделал.

Ответ 8

Удалите из модифицированного интерфейса все параметры, которые не относятся к этому.

Ответ 9

Моя проблема заключалась в том, что я использую сопрограммы Kotlin и использовал 'suspend' в методе Retrofit GET. Просто удалите его и все работает нормально.