Android模拟器运行项目报Illegal URL: https//10.0.2.2:3000错误如何解决
问题原因
错误堆栈明确提示非法URL为https//10.0.2.2:3000,你配置的baseUrl里https协议后缀缺少冒号:,不符合标准URL格式规范。标准HTTP/HTTPS协议的URL前缀必须是http://或者https://,你写的https//缺失了冒号,所以Retrofit解析baseUrl时直接抛出非法URL异常。
解决方法
- 优先修改RetrofitClient中的baseUrl配置,把
"https//10.0.2.2:3000"修正为带冒号的正确格式。如果你的本地服务没有配置HTTPS证书,建议优先用HTTP协议,避免后续出现SSL证书校验错误,本地测试直接用http://10.0.2.2:3000即可。 - 若确实需要使用HTTPS协议访问本地服务,需要提前在Android项目中配置本地HTTPS证书的信任规则,避免后续请求被拦截。
修改后的配置代码参考:
object RetrofitClient { private var ourInstance:Retrofit?=null val instance:Retrofit get() { if(ourInstance==null) ourInstance=Retrofit.Builder() // 修正为正确的URL格式,本地无HTTPS证书用http://即可 .baseUrl("http://10.0.2.2:3000") .addCallAdapterFactory(RxJava2CallAdapterFactory.create()) .addConverterFactory(ScalarsConverterFactory.create()) .build() return ourInstance!! } }
额外注意事项
- 10.0.2.2是Android模拟器专门指向宿主机localhost的地址,该地址配置本身没有问题。
- 如果使用HTTP协议,Android 9及以上系统默认禁止明文HTTP请求,需要在AndroidManifest.xml的application节点添加
android:usesCleartextTraffic="true"配置才能正常访问。
内容的提问来源于stack exchange,提问作者martinivanov
相关产品推荐
相关产品推荐

