找不到改造注释.(参数#1)

mk7*_*k72 54 android android-studio retrofit

我希望从URL中获取RSS代码Retrofit,如果我在get注释中静态输入url,一切正常,但是使用动态URL我得到一个错误.

我的界面服务:

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

并调用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());
        }
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

retrofit.RetrofitError: AllNewsService.getRss: No Retrofit annotation found. (parameter #1)
Run Code Online (Sandbox Code Playgroud)

注意:我在下面添加了一行,proguard.cfg但它没有用

-keep class retrofit.** { *; }
Run Code Online (Sandbox Code Playgroud)

Dav*_*vra 190

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

  • 天哪,你真是个节省时间的人。多谢,伙计。由于快速开发,我也忘记了该注释。 (2认同)

Nul*_*ion 41

除了Destil的回答

确保parameters你传递给的retrofit interface methods(i.e callbacks, headers, body )只属于retrofit package.例如,不是您想要的自定义回调.

  • 确保它也属于*right*改装包.在我的情况下,我不小心从改造中导入了一个注释而不是retrofit2 (6认同)

Irs*_*shu 11

还要确保添加@Query@Field所有参数,具体取决于您是否发出GET/POST.

例如:

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


MrV*_*lev 9

我的问题是我正在使用 Kotlin 协程并在 Retrofit GET 方法中使用了“暂停”。只需删除它,一切正常。


Kin*_*nho 9

太晚了,但我刚刚面临同样的问题。我在我的改造界面和视图模型上使用带有“延迟”和“等待”的改造 2.5.0。我从改造 github 中读到,2.6.0 deferred 已被弃用,我们可以从 deferred 切换到“暂停”。在我升级改造版本之前,我只是简单地从延迟更改为挂起并运行它,并得到了同样的错误。我通过将我的改造版本从 2.5.0 移动到 2.6.0 来解决它。

我的观点是,您的应用程序中当前的改造版本可能不支持您在改造相关的类或接口中使用改造的方式。

  • 就是这个!从 2.5 更新到 2.6 解决了我的问题,谢谢你! (4认同)

Ric*_*ere 8

如果您正在发帖,则需要包含@Body


Alb*_*o M 7

我有@Post注释却忘了@Field@FormUrlEncoded注解


Inf*_*ter 5

(科特林)我在这里解决了:

//@FormUrlEncoded // Don't used
@POST("orders")
fun saveOrders(@Body orders: Orders): Call<OrdersResponse>
Run Code Online (Sandbox Code Playgroud)


ngo*_*son 5

就我而言,我使用的是 Retrofit 2.5.0 而不是最新版本。更新到 2.9.0,一切又恢复正常了。