Не найдено аннотации дооснащения. (параметр # 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.** { *; }
Ответы
Ответ 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. Просто удалите его и все работает нормально.