2015-10-26 48 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