Retrofit 2.0 Beta 2 - Path编码的问题?

时间:2015-10-14 14:20:27

标签: android retrofit

我最近尝试从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之间处理预编码输入是否有变化,或者这只是一个错误?

感谢。

1 个答案:

答案 0 :(得分:4)

这是known issue,其中包含retrofit2-beta2。

开发人员正在研究不同的解决方案,但目前还不清楚是否或何时会解决。在此期间,要么降级到beta 1,要么改为使用@Url参数而不是@Path,如Github所示:

@GET
public Call<SomeObject> fooBar(
    @Url String subPath
}

然后:

fooBar("/foo/bar/" + subPath);

这对我来说也很烦人。希望这在未来版本的改造中得到修复。