请选择 进入手机版 | 继续访问电脑版

Retrofit动态切换baseUrl

[复制链接]
尊悦模具刘沛昌 发表于 2020-12-31 20:25:44 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
  1. 使用retrofit动态切换baseUrl  通过okhttp自界说拦截器切换baseUrl一开始怎么都不可,一直拿到都是旧  Url  怎么试都不可
复制代码
  1. 没有改之前//线上public static final String BASE_SERVER_URL="http://124.165.205.48:20005/app/api/";//安保系统public static final String BASE_SECURITY_SERVER_URL="http://124.165.205.48:20005/security-";改了之后
复制代码
  1. //线上public static final String BASE_SERVER_URL="http://124.165.205.48:20005/";//安保系统public static final String BASE_SECURITY_SERVER_URL="http://124.165.205.48:20005/";
复制代码
  1. 不偷懒了,唉这两个所在上线后会发生改变,不会一致的。public class BaseUrlInterceptor implements Interceptor {    @Override    public Response intercept(Chain chain) throws IOException {        //获取原始的originalRequest        Request originalRequest = chain.request();        //获取当前的url        HttpUrl oldUrl = originalRequest.url();        //获取originalRequest的创建者builder        Request.Builder builder = originalRequest.newBuilder();        //获取头信息的集合如:jeapp ,njeapp ,mall        List urlnameList = originalRequest.headers("app");        if (urlnameList != null && urlnameList.size() > 0) {            //删除原有设置中的值,就是namesAndValues集合里的值            builder.removeHeader("app");            //获取头信息中设置的value,如:manage大概mdffx            String urlname = urlnameList.get(0);            HttpUrl baseURL = null;            //根据头信息中设置的value,来匹配新的base_url所在            if (!TextUtils.isEmpty(urlname)) {                switch (urlname) {                    case "one":                        baseURL = HttpUrl.parse(BuildConfig.BASE_SERVER_URL);                        break;                    case "security":                        baseURL = HttpUrl.parse(BuildConfig.BASE_SECURITY_SERVER_URL);                        break;                    default:                        break;                }                //重建新的HttpUrl,需要重新设置的url部分                HttpUrl newHttpUrl = oldUrl.newBuilder()                        .scheme(baseURL.scheme())//http协议如:http大概https                        .host(baseURL.host())//主机所在                        .port(baseURL.port())//端口                        .build();                //获取处理后的新newRequest                Request newRequest = builder.url(newHttpUrl).build();                return chain.proceed(newRequest);            }            return chain.proceed(originalRequest);        } else {            return chain.proceed(originalRequest);        }    }}
复制代码
来源:https://blog.csdn.net/Zhang_110326/article/details/111994378
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )