Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

No Retrofit annotation found. (parameter #1)

I want get RSS code from a URL with Retrofit and if I enter url staticly in the get annotation everything is OK but with dynamic url I get an error.

My interface service :

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

And calling getRss method :

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());
        }

I get the following error:

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

Note: I added below line to proguard.cfg but it didn't work

-keep class retrofit.** { *; }
like image 790
mk72 Avatar asked Feb 06 '15 17:02

mk72


3 Answers

My problem was that I had the @POST annotation, but forgot the @Body annotation for the parameter.

like image 144
David Vávra Avatar answered Nov 11 '22 03:11

David Vávra


Addition to Destil's answer

Make sure the parameters you pass to the retrofit interface methods(i.e callbacks, headers, body ) are only belongs to retrofit package. e.g. Not custom callbacks that you want on your own.

like image 24
NullPointerException Avatar answered Nov 11 '22 05:11

NullPointerException


Also make sure you add @Query or @Field for all the parameters , depending on whether you issuing GET/POST.

eg:

@GET("/api/Books/GetAll")
void GetRecentBooks(@Query int Offset, Callback<List<Book>> cb);
like image 20
Irshu Avatar answered Nov 11 '22 03:11

Irshu