2013-05-17 49 views
2

我正在嘗試爲我的應用程序添加用於json請求的Retrofit庫。 我得到一個非常簡單但煩人的錯誤。Retrofit-Idle java.lang.IllegalStateException:方法路徑不包含{}

當我執行這個方法:

@GET("/Server/ports/{portCode}") 
@Headers({ 
     "Content-Type: application/json", 
     "Accept-Language: en" 
}) 
void listArrivalPorts(
     @Path("portCode") String portCode, 
     Callback<PGSArrivalPortsResponse> callback 
); 

我得到這個錯誤:

Retrofit-Idle 
    java.lang.IllegalStateException: Method path "/Server/ports/{portCode}" does not contain {portCode}. 
    at retrofit.RestMethodInfo.parseParameters(RestMethodInfo.java:320) 
    at retrofit.RestMethodInfo.init(RestMethodInfo.java:90) 
    at retrofit.RestAdapter$RestHandler.invokeRequest(RestAdapter.java:202) 
    at retrofit.RestAdapter$RestHandler.access$300(RestAdapter.java:156) 
    at retrofit.RestAdapter$RestHandler$1.obtainResponse(RestAdapter.java:189) 
    at retrofit.CallbackRunnable.run(CallbackRunnable.java:38) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
    at retrofit.Platform$Android$2$1.run(Platform.java:132) 
    at java.lang.Thread.run(Thread.java:1019) 

但當我去掉更換身體這個樣子,

@GET("/Server/ports/SOMETHING") 
@Headers({ 
     "Content-Type: application/json", 
     "Accept-Language: en" 
}) 
void listArrivalPorts(
     Callback<PGSArrivalPortsResponse> callback 
); 

它工作正常。

此外,如果我添加參數@Path("portCode") String portCode我得到相同的錯誤。

爲什麼會發生這種情況? 謝謝。

回答

6

路徑參數不支持大寫字母。使用全部小寫字母,數字,下劃線和/或連字符。

我會在下一個版本中解決這個問題。

+0

謝謝,這個伎倆。 – wrecker