-
-
Notifications
You must be signed in to change notification settings - Fork 458
配置BaseUrl
liujingxing edited this page Feb 25, 2023
·
3 revisions
通过@DefaultDomain
注解配置默认域名,如下:
public class Url {
@DefaultDomain //设置为默认域名
public static String baseUrl = "https://www.wanandroid.com/";
}
我们只需要对BaseUrl重新赋值,此时发请求便会立即生效,如下:
//更改前 url = "https://www.wanandroid.com/service/..."
RxHttp.get("/service/...")
.toObservableString()
.subscribe();
Url.baseUrl = "https://www.qq.com"; //动态更改默认域名,改完立即生效,非默认域名同理
//更改后 url = "https://www.qq.com/service/..."
RxHttp.get("/service/...")
.toObservableString()
.subscribe();
对于多域名的情况,RxHttp提供了@DefaultDomain()
、@Domain()
这两个注解来标明默认域名和非默认域名,如下:
public class Url {
@DefaultDomain() //设置为默认域名
public static String baseUrl = "https://www.wanandroid.com/"
@Domain(name = "BaseUrlBaidu") //非默认域名,并取别名为BaseUrlBaidu
public static String baidu = "https://www.baidu.com/";
@Domain(name = "BaseUrlGoogle") //非默认域名,并取别名为BaseUrlGoogle
public static String google = "https://www.google.com/";
}
注:@DefaultDomain()注解只能使用一次
通过@Domain()
注解标注非默认域名,就会在RxHttp类中生成setDomainToXxxIfAbsent()
方法,其中Xxx就是注解中取的别名。
上面我们使用了两个@Domain()
注解,此时(需要Rebuild一下项目)就会在RxHttp类中生成setDomainToBaseUrlBaiduIfAbsent()
、setDomainToBaseUrlGoogleIfAbsent()
这两方法,此时发请求,我们就可以使用指定的域名,如下:
//使用默认域名,则无需添加任何额外代码
//此时 url = "https://www.wanandroid.com/service/..."
RxHttp.get("/service/...")
.toObservableString()
.subscribe();
//手动输入域名,此时 url = "https://www.mi.com/service/..."
RxHttp.get("https://www.mi.com/service/...")
.toObservableString()
.subscribe();
//手动输入域名时,若再次指定域名,则无效
//此时 url = "https://www.mi.com/service/..."
RxHttp.get("https://www.mi.com/service/...")
.setDomainToBaseUrlBaiduIfAbsent() //此时指定Baidu域名无效
.toObservableString()
.subscribe();
//使用谷歌域名,此时 url = "https://www.google.com/service/..."
RxHttp.get("/service/...")
.setDomainToBaseUrlGoogleIfAbsent() //指定使用Google域名
.toObservableString()
.subscribe();
通过以上案例,可以知道,RxHttp共有3种指定域名的方式,按优先级排名分别是:手动输入域名 > 指定非默认域名 > 使用默认域名。