Retrofit之动态设置Baseurl,并保存在本地。

解决需求:只有一个baseurl,且baseurl可以动态配置,配置后可保存也可更新。

前段时间做项目,遇到这样一个需求,APP要求访问的服务主地址可以用户自己配置,且配置过后,还可以手动更新。需求分析一下明白了,就是想动态配置主域名嘛,其余路径不变。刚好项目中我用的又是Retrofit,好吧,明白了,就是想动态配置那个baseurl嘛。配置了肯定要保存,这个简单,就用SharedPreference保存就行,至于更新嘛,就是刷新SharedPreference的值。好了,需求分析完了,技术解决思路也想好了,下面开始步入正题。Retrofit比较早的版本中,是有一个接口可以动态更新这个baseurl的,不过后来被删了。好吧,官方的既然没有了,那我们看看网上有没有轮子吧^……^,毕竟重复造轮子是不能忍的。这里我发现了一个很好的轮子RetrofitUrlManager,完全可以满足我的这个需求。

1.添加这个框架的依赖。

compile 'me.jessyan:retrofit-url-manager:1.4.0'

2.将okhttp的初始化换成RetrofitUrlManager的with方法。

        this.mOkHttpClient=RetrofitUrlManager.getInstance()
                .with(newOkHttpClient.Builder())//RetrofitUrlManager 初始化
                .readTimeout(5, TimeUnit.SECONDS)
                .connectTimeout(5, TimeUnit.SECONDS)
                .build();
                //从SharedPreference获取存的baseurl,不为空设置sp中,为空设置默认的。
                mRetrofit = new Retrofit.Builder()
                .baseUrl(MyUtil.MAIN_URL)//通用的url
                .client(mOkHttpClient)
                .addConverterFactory(GsonConverterFactory.create())//Gson转换工厂
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())//与Rxjava结合
                .build();

 

3.调用设置全局baseurl的方法,设置此全局baseurl会替换retrofit初始化时配置的那个baseurl。

RetrofitUrlManager.getInstance().setGlobalDomain("你想要配置的baseurl");
//TODO:将数据存到SP里面。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值