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

使用Picasso加载图片出现HTTP 504错误如何解决?

HTTP 504属于网关超时类错误,你更换Glide也能复现,说明问题不在图片加载框架本身,是网络请求链路中代理、CDN或远端服务器在超时窗口内未能返回响应导致的,可按以下步骤逐一排查解决:

  • 第一步:验证链接本身可用性
    将日志中打印的Unsplash图片链接复制到和测试设备同一网络环境的浏览器中打开,确认能否正常加载。如果浏览器也无法打开,直接排除客户端代码问题,优先排查网络侧限制。
  • 第二步:排查测试环境的网络问题
    • 若使用模拟器测试:先确认模拟器本身可以正常访问公网,可打开模拟器内置浏览器访问公共站点验证,多数模拟器504问题都是宿主机代理设置错误、科学上网工具干扰、网络权限未完全开启导致的。
    • 若使用真机测试:更换不同网络环境测试,比如切换移动流量、连接其他WiFi,确认是不是当前网络的网关限制、DNS污染或者运营商屏蔽了Unsplash的资源节点。
  • 第三步:手动拉长图片加载框架的超时阈值
    Picasso默认的HTTP请求超时时间较短,你可以自定义OkHttpClient作为请求客户端,调整超时配置:
// 引入OkHttp依赖后自定义客户端,调整超时时间为30秒
OkHttpClient customClient = new OkHttpClient.Builder()
        .connectTimeout(30, TimeUnit.SECONDS)
        .readTimeout(30, TimeUnit.SECONDS)
        .writeTimeout(30, TimeUnit.SECONDS)
        .build();
// 初始化Picasso时替换默认下载器,注意要在第一次调用Picasso.get()前执行初始化
Picasso.setSingletonInstance(new Picasso.Builder(yourContext)
        .downloader(new OkHttp3Downloader(customClient))
        .loggingEnabled(true)
        .build());
  • 第四步:检查Unsplash调用限制
    Unsplash开放API有请求频率和配额限制,如果你使用的是测试密钥、短时间内请求次数超限,或者生成的图片链接已过有效期,都会被CDN拦截导致超时。你可以登录Unsplash开发者后台核对当前配额消耗情况,确认链接有效期。
  • 第五步:排查缓存冲突
    临时禁用Picasso的内存和磁盘缓存测试,排除旧无效缓存导致的请求异常:
Picasso.get()
        .load(imageUri)
        .resize(200,200)
        // 临时禁用缓存
        .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE)
        .networkPolicy(NetworkPolicy.NO_CACHE, NetworkPolicy.NO_STORE)
        .into(holder.photo, new Callback() {
            // 原有回调逻辑不变
        });

内容的提问来源于stack exchange,提问作者Mhb flh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 01:15:04