web-dev-qa-db-fra.com

Aucune annotation de modification trouvée. (paramètre n ° 1)

Je veux obtenir le code RSS d'une URL avec Retrofit et si j'entre url de manière statique dans l'annotation à obtenir tout est OK, mais avec une URL dynamique, j'obtiens une erreur.

Mon service d'interface:

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

Et en appelant la méthode 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());
        }

Je reçois l'erreur suivante:

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

Remarque: J'ai ajouté la ligne ci-dessous à proguard.cfg mais cela n'a pas fonctionné

-keep class retrofit.** { *; }
33
mk72

Ajout à la réponse de Destil

Assurez-vous que la parameters que vous passez à la retrofit interface methods(i.e callbacks, headers, body ) appartiennent uniquement à retrofit package. par exemple. Pas les rappels personnalisés que vous voulez vous-même.

35

Mon problème était que j'avais l'annotation @POST, mais que j'avais oublié l'annotation @Body pour le paramètre.

150
David Vávra

Assurez-vous également que vous ajoutez @Query ou @Field pour tous les paramètres, selon que vous publiez ou non GET/POST.

par exemple:

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

J'avais l'annotation @Post mais j'ai oublié les annotations @Field et @FormUrlEncoded

6
Alberto M

Veuillez vérifier la classe Path que vous utilisez et assurez-vous que le package est retrofit2.http.Path au lieu de org.simpleframework.xml.Path.

2
Francesco Florio

Vous avez probablement oublié d’abord d’initialiser l’adaptateur, comme indiqué dans l’api de modification:

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

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

2
dominik4142

Dans mon cas, j’ai juste oublié de supprimer le paramètre Callback pour l’appel de service lorsque je commence à utiliser retrofit 2. Assurez-vous que vous n’avez pas commis l’erreur stupide que j’ai commise.

1
Sfseyhan

Supprimer de l'interface de modification tous les paramètres n'appartenant pas à cela.

0
lucasddaniel