安卓 Retrofit 编码 URL

4

我正在使用Retrofit 2,当我想调用像base/first/second这样的url时,斜杠会被转换为%2F。根据Retrofit官方文档,我应该能够使用

(@Path(value = "address" , encode = false)

但是Android Studio显示:

无法找到符号方法encode()

3个回答

6

请尝试使用encoded=false而不是encode=false


3

我之前也遇到了Retrofit的这个问题,但我已经解决了:

简而言之,你需要这样写: (@Path(value ="address", encode = false) String address)

例如我们的链接是:https://mobile.test/android

首先,你的构建器需要一个setEndpoint()方法。你可以传入"http:/"或"https:/".

RestAdapter.Builder restBuilder = new RestAdapter.Builder()
            .setEndpoint("https://")
            .setConverter(new GsonConverter(gson))
            .setClient(new OkClient(new OkHttpClient()));
    return restBuilder.build();

其次,您应该将String值分配给@GET("/{address}"):
@GET("/{address}") void getExampleModels(@Path(value = "address", encode = false) String address, Callback<exampleModel> callback);

最终,您可以使用字符串参数调用它而不出现错误:
getYourClass().getExampleModels(
            "mobile.test/android",
            newCallback<exampleModel>(){ 
                . . . 
            });

祝你有美好的一天。


3

Emma所说的是对的,但实际上应该是 encoded=true 而不是 false。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接