一、产生动态设置url的需求的原因
前几天开发项目的时候碰到一件比较头疼的事,就是获取json数据的主域名不一样,最简单粗暴的方法就是重新写一份retrofit
但这是十分低效的,写重复性代码就程序员最不想做的一件事之一,所以找了好多文章,最后找到了一个反射机制解决此问题的
一个好方法,代码量也不是很多,也比较好理解。
二、利用反射解决retrofit的动态设置URL
//由于retrofit中baseUrl字段是私有的所以采用反射获取此字段
val field: Field = Retrofit::class.java.getDeclaredField("baseUrl")
//设置成可访问
field.isAccessible = true
//构造一个HttpUrl实例,然后设置baseUrl
val newUrl = HttpUrl.parse(URL)
field.set(retrofit, newUrl)
三、结语
虽然是一个简单的问题,但是也节省了我们一些时间,所以还是值得的