反射切换:亲测有效
Class<Retrofit> retrofitClass = Retrofit.class;try { Field baseUrlField = retrofitClass.getDeclaredField("baseUrl"); baseUrlField.setAccessible(true); baseUrlField.set(retrofit, HttpUrl.parse(newBaseUrl)); Field serviceMethodCacheField = retrofitClass.getDeclaredField("serviceMethodCache"); serviceMethodCacheField.setAccessible(true); Map<Method, Object> serviceMethodCache = (Map<Method, Object>) serviceMethodCacheField.get(retrofit); if (null != serviceMethodCache && serviceMethodCache.size() > 0) { for (Map.Entry<Method, Object> methodObjectEntry : serviceMethodCache.entrySet()) { Class valueClass = methodObjectEntry.getValue().getClass(); baseUrlField = valueClass.getDeclaredField("baseUrl"); baseUrlField.setAccessible(true); baseUrlField.set(methodObjectEntry.getValue(), HttpUrl.parse(newBaseUrl)); } }} catch (Exception e) { e.printStackTrace();}