Dagger + Retrofit 动态 baseUrl

Dagger + Retrofit dynamic baseUrl

我需要更改可由用户输入的基数 url,这意味着每次用户输入时基数 URL 都可能完全不同。

我怎样才能实现这些。

我试过的。

Retrofit2 生成器方法

retrofit.newBuilder().baseUrl("www.google.com").build()

但是这些并没有覆盖构建改造实例时提供的基础 url。

尝试了 @Url 注释,但给出 405 方法不受支持。

将基础 url 传递给您的静态方法,它将 return 改造对象

public static Retrofit getDynamicClient(String mBaseUrl) {
    retClient = new Retrofit.Builder().baseUrl(mBaseUrl).build();
    return retClient;
}

创建改造实例后,您无法更改基础 url。但是,对于界面中的每个请求方法,您都可以动态更改它们。您可以为每个请求创建一个新的改造实例,但我不建议这样做,因为它效率不高。

@POST()
suspend fun createRoom(
    @Url url: String = "www.....",
    @Body body: BodyDTO
): Response

在您的情况下,您可能忘记将 http 方法类型注释添加到您的请求方法中。