找不到改进注释。 (参数#1)

我想要从Retrofit的URL获取RSS代码,如果我在get注释中静态地inputurl,一切正常,但是dynamicurl,我得到一个错误。

我的界面服务:

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

Solutions Collecting From Web of "找不到改进注释。 (参数#1)"

除了Destil的答案

确保您传递给retrofit interface methods(ie callbacks, headers, body )parameters retrofit interface methods(ie callbacks, headers, body )只属于retrofit package 。 例如,你自己想要的自定义callback。

我的问题是我有@POST注释,但忘记了参数的@Body注释。

另外请确保您为所有参数添加@Query@Field ,具体取决于您是否发出GET / POST。

例如:

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

请检查您正在使用的Path类,并确保该包是org.simpleframework.xml.Path而不是org.simpleframework.xml.Path 。 这是一个常见的Retrofit注释错误。

在我的情况下,当我开始使用改进2时,我忘了删除服务调用的callback参数。确保你没有做我做的愚蠢的错误。

我有@Post注释,但忘了@Field和@FormUrlEncoded注释

你可能忘了初始化适配器,正如在翻新API中提到的:

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

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

##否find改进注释。 (参数#1)(@ DELETE方法)##

  1. public interface ApiService { @HTTP(method = "DELETE", path = "PathEndPoint", hasBody = true) Call<MyClubDeleteBeans> jobDelete(@retrofit2.http.Header("Authorization") String token, @retrofit2.http.Body MyClubDeleteModel myClubDeleteModel); } 2. Retrofit builder = new Retrofit.Builder() .baseUrl(Constants.BASE_URL) .addConverterFactory(GsonConverterFactory.create()) .build(); ApiService interfaz = builder.create(ApiService.class); Call<MyClubDeleteBeans> respuesta = interfaz.jobDelete("Token " + token, myClubDeleteModel); respuesta.enqueue(new retrofit2.Callback<MyClubDeleteBeans>() { @Override public void onResponse(Call<MyClubDeleteBeans> call, retrofit2.Response<MyClubDeleteBeans> response) { listner.onSuccessDelete("" + response.body().getCode()); } @Override public void onFailure(Call<MyClubDeleteBeans> call, Throwable throwable) { listner.onError(throwable.getMessage()); } }); 

改造界面中删除所有不属于这个的参数。