为什么改造@Path没有替换?

时间:2015-10-26 23:33:47

标签: android retrofit

我有一个使用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) {

        }
    });

谢谢!

3 个答案:

答案 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