2015-02-06 2 views
23

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

Моя служба Интерфейс:

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.** { *; } 

ответ

27

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

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

+3

убедитесь, что она относится к * правому * модифицированному пакету. В моем случае я случайно импортировал аннотацию из retrofit вместо retrofit2 –

1

Вы, наверное, забыли инициализирует адаптер первой, как указано в дооснащения апи:

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

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

102

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

+0

К сожалению, это не будет работать с/@ аннотацией запроса, так как вы получите сообщение об ошибке: ** retrofit.RetrofitError:/@ Параметры тела нельзя использовать с формой или многочастной кодировкой. (параметр # 1) ** –

+0

как насчет '@ GET' аннотации .. ?? У меня такая же проблема. – iMDroid

+0

Это правильный ответ. – VonSchnauzer

4

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

например:

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

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

1

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

3

я имел аннотацию @post, но забыли @Field и @FormUrlEncoded примечаниями

0

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

Смежные вопросы