我有一个使用Retrofit 2.0 beta2的大项目,但似乎@Path在某种程度上被破坏了。
这是收到请求时服务器端的日志:/ group /%7Bid%7D / users “{}”被识别为编码值,而不是用实际值替换它。
我尝试创建一个测试项目,看起来很有效,但是当我在大项目中尝试相同的代码时,它会中断!可能是什么原因?这是一个问题吗?
这是我测试的简单界面
@GET("/group/{id}/users")
Call<Object> groupList(@Path("id") int groupId);
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://1.1.1.1:5050")
.addConverterFactory(GsonConverterFactory.create())
.build();
RetrofitConfigurationService2 service = retrofit.create(RetrofitConfigurationService2.class);
service.groupList(12).enqueue(new Callback<Object>() {
@Override
public void onResponse(Response<Object> response, Retrofit retrofit) {
}
@Override
public void onFailure(Throwable t) {
}
});
谢谢!
答案 0 :(得分:3)
答案是-keep interface com.yourretrofitinterface。** {*; } 在proguard文件中。
答案 1 :(得分:1)
我遇到了完全相同的问题。 更为通用的解决方案是将以下内容添加到您的proguard规则中。
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
有关复古的完整规则:
-keepattributes Signature
-keepattributes Exceptions
-dontnote okhttp3.**, retrofit2.**
-dontwarn retrofit2.**
-keep class retrofit2.** { *; }
-keepclasseswithmembers class * {
@retrofit2.http.* <methods>;
}
答案 2 :(得分:0)
现在尝试阅读此博客:http://inthecheesefactory.com/blog/retrofit-2.0/en
Retrofit 2.0带有新的URL解析概念。基本URL和@Url 不仅仅是简单地结合在一起,而是已经解决了 与改变的方式相同。
作者总结道:
- 结尾
基本网址:始终以/
- 开头
@ Url:不要以/
如果您在项目中使用Proguard,请在配置中添加以下行:
-dontwarn翻新。**
-keep class retrofit。** {*; }
-keepattributes签名
-keepattributes Exceptions