You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Retrofit初始化报Illegal URL异常,Activity实例化失败求助

解决Retrofit初始化时的Illegal URL异常

嘿,我来帮你搞定这个Retrofit的报错问题!

先看问题本身

你这段Retrofit初始化代码里,baseUrl传了个空字符串:

Retrofit.Builder builder = new Retrofit.Builder()
    .baseUrl("") // 这里是空的,这就是问题根源!
    .addConverterFactory(GsonConverterFactory.create());
Retrofit retrofit=builder.build();
UserClient userClient=retrofit.create(UserClient.class);

运行后就抛出了这个异常:

java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.saiid.authetification/com.example.saiid.authetification.MainActivity}: java.lang.IllegalArgumentException: Illegal URL:

为啥会报错?

Retrofit对baseUrl的要求很明确:必须是一个合法的HTTP/HTTPS格式的完整基础地址,空字符串完全不符合这个规则。另外就算填了地址,还有两个细节要注意:

  • 必须以http://或者https://开头,不能只写域名
  • 地址末尾最好带上斜杠/,不然后续拼接接口路径时容易出问题

怎么解决?

  • 替换成真实有效的Base URL
    把空字符串换成你的API服务的实际地址,比如你的后端API部署在https://api.your-service.com,那代码就改成:
    Retrofit.Builder builder = new Retrofit.Builder()
        .baseUrl("https://api.your-service.com/") // 注意末尾的斜杠
        .addConverterFactory(GsonConverterFactory.create());
    
  • 检查URL格式是否合规
    绝对不能省略协议部分(http:///https://),比如只写api.your-service.com也是会报错的;末尾加斜杠是个好习惯:比如你的接口注解是@GET("users/list"),那最终拼接出来的URL就是https://api.your-service.com/users/list,不会出现拼接错误
  • 验证URL是否能正常访问
    不确定地址对不对的话,先在浏览器里打开这个Base URL,确认能返回正常的HTTP响应(哪怕是404也没关系,只要不是无法访问就行)

额外小建议

如果你的项目有开发、测试、生产多个环境,可以把Base URL放在strings.xml或者专门的配置类里,这样切换环境的时候不用改代码,更方便。

内容的提问来源于stack exchange,提问作者Ouertani Saiid

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 04:09:02