gpt4 book ai didi

java - 在 Retrofit 中使用绝对 URL

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:19:32 25 4
gpt4 key购买 nike

我有一个 HAL我正在使用的 API,在许多情况下,我需要将请求(使用不同的方法)发送到我从 API 返回的 URL。这意味着我不想在我的改造 api 接口(interface)中硬编码 URL 的路径,但我想要的只是使用改造向该 URL 发送一个简单的请求。我现在正在使用 Volley,我知道我可以为此目的使用 OkHttp,但我想知道在 Retrofit 中是否有一种很好的方法来做这样的事情?

最佳答案

最近 Square 发布了 Retrofit v2.0.0 BETA并且它内置了对动态 URL 的支持。即使图书馆处于测试阶段,基于什么 Jake Wharton在 DroidCon NYC 2015 告诉我们,所有的 api 都是稳定的,不会改变。我亲自将它添加到我的作品中,所以这取决于你。

如果您决定进行升级,您会发现以下链接很有用:
Jake Wharton presentation @ DroidCon NYC 2015
A very good guide on the changes

简而言之,您现在可以在没有任何路径的情况下使用 api 注释(如 @GET 或 @POST 等),然后将 @URL 传递给该方法将用于调用的 api 方法。

----------------改造 1.x

我想出了一个很好的方法来做到这一点,并愿意分享它。

诀窍是在创建 RestAdapter 时使用动态 URL 作为端点,然后在 API 接口(interface)上有一个空路径。

这是我的做法:

public RestAdapter getHostAdapter(String baseHost){
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(baseHost)
.setRequestInterceptor(requestInterceptor)
.build();

return restAdapter;
}

我使用此方法构建我的 restAdapter,然后在我的界面中有此:
(如果您的 URL 添加了查询参数,这将不起作用。请参阅下一个答案以了解该情况的解决方案)

public interface General {
@GET("/")
void getSomething(Callback<SomeObject> callback);
}

最后像这样使用它们:

getHostAdapter("YOUR_DYNAMIC_URL").create(General.class)
.getSomething(new Callback<SomeObject>(){
...
})

希望对您有所帮助。

关于java - 在 Retrofit 中使用绝对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28116395/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com