我最近尝试从Retrofit 2.0 beta 1升级到beta 2,升级了我的所有代码,并注意到阻碍我进度的一个区别。
我有一个用例,我需要动态地向端点提供路径组件,并且我使用Path替换变量。
例如:
@GET("/foo/bar/{sub}")
public Call<SomeObject> fooBar(
@Path(value = "{sub}", encoded=true) String subPath
}
(道歉,如果语法不完美,但你得到了要点)。
在beta 1中,我可以将subPath设置为&#34; hello / world&#34;结果端点将是&#34;/foo/bar/hello/world
&#34;
在beta 2中,无论&#34;编码&#34;的值如何,它都会自动对输入进行编码。所以我得到了&#34; /foo/bar/hello%2Fworld
&#34;
在beta 1和beta 2之间处理预编码输入是否有变化,或者这只是一个错误?
感谢。
答案 0 :(得分:4)
这是known issue,其中包含retrofit2-beta2。
开发人员正在研究不同的解决方案,但目前还不清楚是否或何时会解决。在此期间,要么降级到beta 1,要么改为使用@Url参数而不是@Path,如Github所示:
@GET
public Call<SomeObject> fooBar(
@Url String subPath
}
然后:
fooBar("/foo/bar/" + subPath);
这对我来说也很烦人。希望这在未来版本的改造中得到修复。