2015-10-26 33 views
0

我有一个使用Retrofit 2.0 beta2的大项目,但它好像@Path被打破了。为什么Retrofit @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) { 

     } 
    }); 

谢谢!

回答

2

答案是-keep接口com.yourretrofitinterface ** {*。在proguard文件中} 。

+0

这就解决了这个问题,否则当你使用Proguard时,@Path标记不会保存在apk中。谢谢! –

+0

谢谢你救了我吧。@wenchao –

0

现在尝试阅读这篇博客:http://inthecheesefactory.com/blog/retrofit-2.0/en

改造2.0配备了新的URL解析概念。基本URL和@Url 不仅仅是简单的组合在一起,而是以相同的方式解决了 。

作者得出结论:

  • 基地网址:始终/

  • @url结束:请勿/

开始如果在您的项目中使用Proguard添加以下lin下载到您的配置:

-dontwarn改造**

-keep类改造** {*;。 }

-keepattributes签名

-keepattributes例外

+0

你甚至读过描述吗?我创建了一个测试项目,它工作正常。相同的代码在另一个大型项目中不起作用。 – WenChao

+0

您添加字符串:-twtwarn翻新。** -keep类翻新。** {*; } -keepattributes签名 -keepattributes例外到您的proguard规则? –

+0

我怀疑这个问题可能与proguard,会尝试让你知道 – WenChao

相关问题