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)
Nul*_*ion 41
除了Destil的回答
确保parameters你传递给的retrofit interface methods(i.e callbacks, headers, body )只属于retrofit package.例如,不是您想要的自定义回调.
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)
太晚了,但我刚刚面临同样的问题。我在我的改造界面和视图模型上使用带有“延迟”和“等待”的改造 2.5.0。我从改造 github 中读到,2.6.0 deferred 已被弃用,我们可以从 deferred 切换到“暂停”。在我升级改造版本之前,我只是简单地从延迟更改为挂起并运行它,并得到了同样的错误。我通过将我的改造版本从 2.5.0 移动到 2.6.0 来解决它。
我的观点是,您的应用程序中当前的改造版本可能不支持您在改造相关的类或接口中使用改造的方式。
(科特林)我在这里解决了:
//@FormUrlEncoded // Don't used
@POST("orders")
fun saveOrders(@Body orders: Orders): Call<OrdersResponse>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45815 次 |
| 最近记录: |