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

使用Glide加载网络图片时出现FileNotFoundException错误该如何解决?

错误原因

该报错本质是Glide请求图片资源时收到了服务端的404响应,触发的FileNotFoundException,你提供的图片链接本身可正常访问,常见触发原因如下:

  • Glide默认使用HttpURLConnection发起请求,对部分服务端的3xx重定向、HEAD请求兼容较差。Glide默认会先发起HEAD请求校验资源大小,若服务端不支持HEAD请求就会返回404错误
  • 图片链接首尾存在空格、不可见字符,导致实际请求的链接和预期不符
  • 应用未正确配置网络权限,或设备网络被代理、防火墙拦截
  • 低版本Glide存在已知的HTTPS请求兼容bug
修复方案
  1. 首先排查基础配置,确认AndroidManifest.xml已添加网络权限:
<uses-permission android:name="android.permission.INTERNET" />

若使用Android 9及以上系统,确认自定义网络安全配置未拦截该域名的HTTPS请求。

  1. 替换Glide的网络请求组件为OkHttp,规避默认HttpURLConnection的适配问题,依赖版本需和你使用的Glide版本保持一致:
// 示例为Glide 4.15.1版本,可替换为你实际使用的版本号
implementation 'com.github.bumptech.glide:glide:4.15.1'
kapt 'com.github.bumptech.glide:compiler:4.15.1'
implementation 'com.github.bumptech.glide:okhttp3-integration:4.15.1'

添加依赖后重新编译,Glide会自动使用OkHttp作为请求客户端,对重定向、各类服务端响应的兼容性更好。

  1. 修改Glide请求配置,跳过HEAD请求校验,同时清洗链接的无效字符:
@BindingAdapter("imageUrl")
fun ImageView.bindImage( imgUrl: String?) {
    imgUrl?.let {
        // 清洗链接首尾的空格、不可见字符
        val cleanUrl = it.trim()
        val imgUri = cleanUrl.toUri().buildUpon().scheme("https").build()
        Glide.with(this.context)
            .load(imgUri)
            .apply(
                RequestOptions()
                    .error(R.drawable.ic_broken_image)
                    // 调整缓存策略,直接缓存原始资源,跳过HEAD请求校验
                    .diskCacheStrategy(DiskCacheStrategy.DATA)
            )
            .into(this)
    }
}
  1. 若修改后仍有报错,可排查测试设备的网络环境,确认无代理、防火墙拦截该图片域名的请求。

内容的提问来源于stack exchange,提问作者Ahmed Mamdouh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:45:03